-1

所以基本上我想选择Col A等于字符串'hey'的所有行。我的问题是 Col A 可以包含 null/nan,因此我得到一个

TypeError: invalid type comparison. 

执行时:

df.loc[df['A'] == 'hey']

然后我提出了另一个条件:

df.loc[df['A'].notnull() & (df['A'] == 'hey')] 

在这里我得到同样的错误。

我做了一个 hack,我将 Col A 中的所有空值更改为 '' 但这并不漂亮 无论如何,最好先选择 Col A 不为空的所有行,然后从那里选择所有等于 '嘿'?

4

3 回答 3

1

我想应该有一些数字,所以尝试将值转换为strings 或比较 numpy 数组:

newDf = df[df.A.astype(str) == 'hey']

或者:

newDf = df[df.A.values == 'hey']
于 2018-06-27T09:27:37.270 回答
0

这个怎么样?

df['A'] = df['A'].astype(str)
newDf = df[df.A == 'hey']

这应该为您提供一个新的数据框,其中所有行都包含 A 列中的“嘿”?

于 2018-06-27T09:26:31.470 回答
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
于 2018-06-27T09:51:01.063 回答