如何使用 Pandas 删除对应列具有负值的任何行?

How to delete any row for which a corresponding column has a negative value using Pandas?

我得到了一个 CSV 数据文件。使用 JupyterHub,Python 和 Pandas 我已经能够读取数据框并删除了任何具有 NaN 值的行。 我希望对任何负值做同样的事情。 我试图在该网站上搜索类似的问题,但似乎找不到适合的解决方案。 下面是我如何删除带有 NaN 的行 请帮忙!

df=pd.read_csv("cereal.csv")
df1=df.dropna(how='any',axis =0).reset_index(drop=True)
df1.shape
df1.head()

您可以使用 pandas.DataFrame.drop 删除特定列中值为负的行,如下所示:

import pandas as pd
df = pd.DataFrame({
    'colA': [-1, 2, 3, 4, None],
    'colB': [True, True, False, False, True],
})

df = df.drop(df.index[df['colA'] < 0])

输出:

>>> df
   colA   colB
1   2.0   True
2   3.0  False
3   4.0  False
4   NaN   True

另一个选项,语法相似但不使用 .drop。保留不满足条件的行(~作为否定):

>>> df.loc[~(df['colA'] < 0)]  
   colA   colB
1   2.0   True
2   3.0  False
3   4.0  False
4   NaN   True

还有一个,供您选择,具体取决于您是否需要“colA”中的 NaN 值:

>>> df.loc[df['colA'] >= 0)]
   colA   colB
1   2.0   True
2   3.0  False
3   4.0  False