我有一个很大的 df 例如工人和每个工人一天工作的小时数
工人 | 星期一 | 星期二 | 星期三 | |
---|---|---|---|---|
约翰 | 3 | 10 | 10 | |
大卫 | 2 | 8 | 1 | |
克里斯 | 1 | 4 | 2 | 2 |
歌尔 | 1 | 2 | 2 |
我想删除所有至少4小时没有工作的工人的线路(一天无所谓,如果你一天工作4小时,工人会留下来,在这个例子中只有“乔治”将从 df 中删除)
我尝试编写一个函数并尝试使用 lambda 但它没有用,我相信有更简单的方法来做到这一点
谢谢!
答案 0 :(得分:1)
您可以:
>>> df[['monday', 'thuesday', 'wedensday']].ge(4).any(axis='columns')
0 True
1 True
2 True
3 False
dtype: bool
>>> df[df[['monday', 'thuesday', 'wedensday']].ge(4).any(axis='columns')]
worker monday thuesday wedensday
0 John 3 10 10
1 David 2 8 1
2 Chris 1 4 2
答案 1 :(得分:0)
您可以使用布尔索引:
m = (df.loc[:, "monday":] > 3).any(axis=1)
print(df[m])
打印:
worker monday thuesday wedensday
0 John 3 10 10
1 David 2 8 1
2 Chris 1 4 2