我想知道如何在groupby之后创建一个新列并应用sum计算 .
我有这样的数据框 .
> df
tour_id time condA condB condC
1 10 True True True
1 20 True True True
1 30 False False False
1 40 False False False
2 15 True True True
2 25 False False False
2 30 False False False
2 45 False False False
2 50 True True True
我想要
- groupby
tour_id
并取time
列的总和,其中condA
和condB
和condC
都是False
. 如下 .
tour_id sum
1 70
2 100
- 将结果1合并到原始数据框
df
,在组中填入相同的值,并将此新列命名为driving
.
所以结果应该是这样的:
tour_id time condA condB condC driving
1 10 True True True 70
1 20 True True True 70
1 30 False False False 70
1 40 False False False 70
2 15 True True True 100
2 25 False False False 100
2 30 False False False 100
2 45 False False False 100
2 50 True True True 100
我的尝试:
temp = df[(df.condA == True)&(df.condB == True) &(df.condC == True)]
df2 = temp.groupby('tour_id').time.sum().reset_index()
但我不知道如何将 df2
合并到原始 df
.
3 回答
使用
all
过滤数据框您可以将groupby数据帧转换为dict,然后通过它映射tour_id列:
产量: