使用 pandas groupby 获取组子集的总和
Get sum of group subset using pandas groupby
我有一个如图所示的数据框。使用 python,我想得到每个 'Id' 组的 'Value' 的总和,直到第一次出现 'Stage' 12.
df = pd.DataFrame({'Id':[1,1,1,2,2,2,2],
'Date': ['2020-04-23', '2020-04-25', '2020-04-28', '2020-04-20', '2020-05-01', '2020-05-05', '2020-05-12'],
'Stage': [11, 12, 15, 11, 14, 12, 12],
'Value': [5, 4, 6, 12, 2, 8, 3]})
Id Date Stage Value
1 2020-04-23 11 5
1 2020-04-25 12 4
1 2020-04-28 15 6
2 2020-04-20 11 12
2 2020-05-01 14 2
2 2020-08-05 12 8
2 2020-05-12 12 3
我想要的输出:
Id Value
1 9
2 22
如有帮助将不胜感激
让我们尝试使用 groupby
transform
idxmax
过滤数据帧,然后再做一轮 groupby
idx = df['Stage'].eq(12).groupby(df['id']).transform('idxmax')
output = df[df.index <= idx].groupby('id')['Value'].sum().reset_index()
详情
transform
和 idxmax
将 return 第一个索引与所有 groupby
行的 12 匹配,然后我们需要过滤 df
小于 index
以获取数据,直到前 12 个出现。
我有一个如图所示的数据框。使用 python,我想得到每个 'Id' 组的 'Value' 的总和,直到第一次出现 'Stage' 12.
df = pd.DataFrame({'Id':[1,1,1,2,2,2,2],
'Date': ['2020-04-23', '2020-04-25', '2020-04-28', '2020-04-20', '2020-05-01', '2020-05-05', '2020-05-12'],
'Stage': [11, 12, 15, 11, 14, 12, 12],
'Value': [5, 4, 6, 12, 2, 8, 3]})
Id Date Stage Value
1 2020-04-23 11 5
1 2020-04-25 12 4
1 2020-04-28 15 6
2 2020-04-20 11 12
2 2020-05-01 14 2
2 2020-08-05 12 8
2 2020-05-12 12 3
我想要的输出:
Id Value
1 9
2 22
如有帮助将不胜感激
让我们尝试使用 groupby
transform
idxmax
过滤数据帧,然后再做一轮 groupby
idx = df['Stage'].eq(12).groupby(df['id']).transform('idxmax')
output = df[df.index <= idx].groupby('id')['Value'].sum().reset_index()
详情
transform
和 idxmax
将 return 第一个索引与所有 groupby
行的 12 匹配,然后我们需要过滤 df
小于 index
以获取数据,直到前 12 个出现。