首页 > 解决方案 > 如何根据 GroupBy 条件从另一个数据框创建数据框

问题描述

我不知道如何使用 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

我知道我可以使用掩码,但它只允许过滤值 where cancelled == 0(即DepHour cancelled == 0包含 where 的所有其他值)。

感谢和抱歉我的英语不好!

标签: pythonpandasdataframe

解决方案


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

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

推荐阅读