所以基本上我想选择Col A等于字符串'hey'的所有行。 我的问题是Col A可以包含null / nan,因此我得到
TypeError: invalid type comparison.
执行时:
df.loc[df['A'] == 'hey']
然后我提出了另一个条件:
df.loc[df['A'].notnull() & (df['A'] == 'hey')]
我在这里遇到同样的错误。
我做了一个黑客,将Col A中的所有空值都更改为'',但这还不是很美,首先选择Col A不为空的所有行,然后从那里选择所有行等于“嘿”?
答案 0 :(得分:0)
怎么样?
df['A'] = df['A'].astype(str)
newDf = df[df.A == 'hey']
这应该为您提供一个新的数据框,其中所有行都包含A列中的“嘿”?
答案 1 :(得分:0)
我猜应该有一些数字,因此请尝试将值转换为string
或比较numpy数组:
newDf = df[df.A.astype(str) == 'hey']
或者:
newDf = df[df.A.values == 'hey']
答案 2 :(得分:0)
对于null / NaN值,您的逻辑很好。下面是一个例子。您应该提供一个最小且可验证的示例,指明Python / Pandas的版本号。
df = pd.DataFrame({'col': [np.nan, None, 'hey', 45.4352, 'somestring']})
print(df.loc[df['col'] == 'hey'])
col
2 hey