如何基于GroupBy条件从另一个数据框创建一个数据框

时间:2019-02-16 23:47:09

标签: python pandas dataframe

我不知道如何使用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处的所有其他值)。

对不起,我的英语不好!

1 个答案:

答案 0 :(得分:1)

可能有一种更简洁的方法(可能没有两次使用groupby),但这应该可以工作:

flights_df.groupby('DepHour') \
.filter(lambda x: (x['Cancelled'].unique()==[0]).all()) \
.groupby('DepHour')['Cancelled'].value_counts()