python - 有条件 dropna() Pandas

标签 python pandas nan

我有一个相当简单的问题:我想根据条件从 DataFrame 中删除行。数据框看起来像这样:

Program        act
Original RO     A
Original RO    nan
Followup RO     B
Followup RO    nan
Integral RO    nan

我只想删除Original ROIntegral RO 程序的空值。所以它应该看起来像这样:

Program        act
Original RO     A
Followup RO     B
Followup RO    nan

当我尝试对数据帧的一部分进行某些操作并保持其余部分不变时,我总是遇到问题。

我尝试过这个:

df.loc[df.Program.str.match('^(Original|Integral)')] = df.dropna()

但是不起作用。我究竟做错了什么? 提前致谢!

最佳答案

您可以使用 isin() 检查条件和 isna()并对数据框进行子集化。

lst = ['Original RO', 'Integral RO']

df = df[~(df['Program'].isin(lst) & df['act'].isna())]

# Another one using drop.
# df = df.drop(df[(df['Program'].isin(lst) & df['act'].isna())].index)

print (df)

       Program  act
0  Original RO    A
2  Followup RO    B
3  Followup RO  NaN

关于python - 有条件 dropna() Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198369/

相关文章:

c - 如何将信号 NaN 转换为安静 NaN?

python - 如何将列值除以不同行的值?

python - 如何根据条件对 pandas 数据框进行切片?

python - TensorFlow 可以在多个 CPU 上运行(没有 GPU)吗?

python - 查找日期和时间距现在不到 24 小时的对象

python - Foursquare API 请求在版本参数上返回错误

python - 合并 Pandas 中包含 NaN 的相邻列

python - 是否可以将数字设置为 NaN 或无穷大?

python - 获取共享相同列表值及其公共(public)值的所有字典键的字典

python - 在 PyDev 中使用 Protocol Buffer 时导入的 undefined variable