我不知道如何使用groupby条件基于另一个数据框创建一个数据框。例如,我有一个数据框,如果我应用该函数:
flights_df.groupby(by='DepHour')['Cancelled'].value_counts()
我得到这样的东西
DepHour Cancelled
0.0 0 20361
1 7
1.0 0 5857
1 4
2.0 0 1850
1 1
**3.0 0 833**
4.0 0 3389
1 1
5.0 0 148143
1 24
可以看出,DepHour == 3.0
没有取消航班。
使用我用于生成此输出的相同数据框,我想创建另一个仅包含DepHour没有取消偏移的值的数据框。在这种情况下,输出将是仅包含DepHour == 3.0
值的数据帧。
我知道我可以使用遮罩,但是它只允许过滤cancelled == 0
处的值(即包括DepHour cancelled == 0
处的所有其他值)。
对不起,我的英语不好!
答案 0 :(得分:1)
可能有一种更简洁的方法(可能没有两次使用groupby
),但这应该可以工作:
flights_df.groupby('DepHour') \
.filter(lambda x: (x['Cancelled'].unique()==[0]).all()) \
.groupby('DepHour')['Cancelled'].value_counts()