未来警告:元素比较失败;从 pandas 数据帧中删除所有行时



我想将这些行放在数据帧中,这些行在"候选"列中具有值"0"。我的某些数据帧在此列中只有值"0"。我预计在这种情况下我会得到一个空的数据帧,但我收到以下警告和未更改的数据帧。在这种情况下,如何获取空数据帧?还是阻止返回未更改的数据帧?

警告消息:

C:\Users\User\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py:253:未来警告:元素比较失败;改为返回标量,但将来将执行元素比较 res_values = 方法(右值(

我的代码:

with open(filename, encoding='utf-8') as file:
df = pd.read_csv(file, sep=',')
df.drop(df.index[(df['candidate'] == '0')], inplace=True)
print(df)
post id  ...  candidate
0          1  ...          0
1          1  ...          0
2          1  ...          0
3          1  ...          0
4          1  ...          0
..       ...  ...        ...
182       10  ...          0
183       10  ...          0
184       10  ...          0
185       10  ...          0
186       10  ...          0
[187 rows x 4 columns]

感谢大家的建议!

实际上,值类型是int,但前提是 0 是列中的唯一值。如果存在其他值,则类型为object

所以我通过使用解决了这个问题:

df = df.loc[(df["candidate"] != "0") & (df["candidate"] != 0)]

您当前的实现尝试从与条件匹配的Index中查找行。您应该首先找到与条件匹配的行,然后获取其索引:

df.drop(df[df['candidate'] == 0].index, inplace=True)

替换该行后,您的代码段应返回:

Empty DataFrame
Columns: [post id, ..., candidate]
Index: []

您还应该检查列的类型是否与要与之比较的值的类型匹配。

最新更新