【发布时间】:2021-05-03 04:29:13
【问题描述】:
所以,我有一些示例数据:
import pandas as pd
objs = [
{'location':'US', 'fruit':'apple', 'time':'night', 'value': 1},
{'location':'US', 'fruit':'orange', 'time':'night', 'value': 3},
{'location':'US', 'fruit':'banana', 'time':'night', 'value': 1},
{'location':'EU', 'fruit':'apple', 'time':'night', 'value': 4},
{'location':'EU', 'fruit':'orange', 'time':'night', 'value': 1},
{'location':'EU', 'fruit':'banana', 'time':'night', 'value': 2},
{'location':'US', 'fruit':'apple', 'time':'day', 'value': 5},
{'location':'US', 'fruit':'orange', 'time':'day', 'value': 2},
{'location':'US', 'fruit':'banana', 'time':'day', 'value': 3},
{'location':'EU', 'fruit':'apple', 'time':'day', 'value': 6},
{'location':'EU', 'fruit':'orange', 'time':'day', 'value': 2},
{'location':'EU', 'fruit':'banana', 'time':'day', 'value': 1},
]
df = pd.DataFrame.from_records(objs)
它给出了一个长格式的数据框,例如:
location fruit time value
0 US apple night 1
1 US orange night 3
2 US banana night 1
3 EU apple night 4
4 EU orange night 1
5 EU banana night 2
6 US apple day 5
7 US orange day 2
8 US banana day 3
9 EU apple day 6
10 EU orange day 2
11 EU banana day 1
对于location 和time 的每一对/分组,我想根据fruit 列中的值有条件地对value 列求和。
具体来说:
我想对每个分组的 apple 和 orange 求和,但不想对 banana 行求和。
生成以下数据框,并指定新行
location fruit time value
0 US apple night 1
1 US orange night 3
2 US banana night 1
3 US NO_BANANA night 4 <--
4 EU apple night 4
5 EU orange night 1
6 EU banana night 2
7 EU NO_BANANA night 5 <--
8 US apple day 5
9 US orange day 2
10 US banana day 3
11 US NO_BANANA day 7 <--
12 EU apple day 6
13 EU orange day 2
14 EU banana day 1
15 EU NO_BANANA day 8 <--
非常感谢任何帮助
【问题讨论】:
标签: python pandas dataframe sum pandas-groupby