【发布时间】:2020-10-02 02:07:16
【问题描述】:
我想将那些在“候选”列中具有值“0”的行删除。我的一些数据框在此列中只有值“0”。我希望在这种情况下我会得到一个空的数据框,但我会收到以下警告和未更改的数据框。在这种情况下,我怎样才能得到一个空的数据框?或者防止返回未更改的数据框?
警告信息:
C:\Users\User\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py:253:FutureWarning:元素比较失败;而是返回标量,但将来将执行元素比较 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]
【问题讨论】:
-
这不是错误,只是警告。看到这个帖子:stackoverflow.com/questions/40659212/…
-
更自然的删除方式是
df.loc[df["candidate"]!="0"]。它可能也会避免警告 -
@AMH 我试过了,但不幸的是这并没有改变任何东西,我仍然收到警告和相同的输出
-
也许用
df.info()检查你的数据类型,读取csv时candidate应该是float或int