python - 如果熊猫数据框中的一列缺少数据,则删除一组行
问题描述
我有以下数据框:
df
Group Dist
0 A 5
1 B 2
2 A 3
3 B 1
4 B 0
5 A 5
Group
如果Dist
列为零,我正在尝试删除所有匹配的行。这适用于删除第 4 行:
df = df[df.Dist != 0]
但是我也想删除第 1 行和第 3 行,所以我只剩下:
df
Group Dist
0 A 5
2 A 3
5 A 5
关于如何根据这种情况删除组的任何想法?
谢谢!
解决方案
首先获取所有Group
值Entry == 0
,然后通过Group
带有反转掩码的检查列过滤掉它们~
:
df1 = df[~df['Group'].isin(df.loc[df.Dist == 0, 'Group'])]
print (df1)
Group Dist
0 A 5
2 A 3
5 A 5
或者,如果组没有值,您可以使用GroupBy.transform
with进行测试:GroupBy.all
0
df1 = df[(df.Dist != 0).groupby(df['Group']).transform('all')]
编辑:对于删除所有缺少值的组:
df2 = df[df['Dist'].notna().groupby(df['Group']).transform('all')]
对于测试缺失值:
print (df[df['Dist'].isna()])
如果什么都不返回,则没有缺失值NaN
或没有None
类似 Nonetype。
因此可以检查标量,例如,如果该值与 index 在行中10
:
print (df.loc[10, 'Dist'])
print (type(df.loc[10, 'Dist']))
推荐阅读
- couchdb - 在没有管理员密码的 couchdb 3 中创建新用户
- c - gcc“未定义的引用”
- yaml-cpp - 无法使用 yaml-cpp 发出空值
- java - 为什么我的对象变量被认为是空的?
- javascript - 用纯js做jquery`success`功能的功能?
- oauth - 如果用户在自定义 Web 应用程序中通过 MFA,是否可以检查 Azure AD SSO 是否通过?
- java - CSVParser 不处理未引用字符串中的转义分隔符
- python - 辅助表中的 Sqlalchemy 多个外键
- api - 查找隐藏的推文位置
- swift - 检查对元类型动态集合的一致性