【发布时间】:2019-10-04 14:04:31
【问题描述】:
对于以下数据框:
df = pd.DataFrame({'group':['a','a','b','b'], 'data':[5,10,100,30]},columns=['group', 'data'])
print(df)
group data
0 a 5
1 a 10
2 b 100
3 b 30
按列分组时,添加并新建一列,结果为:
df['new'] = df.groupby('group')['data'].sum()
print(df)
group data new
0 a 5 NaN
1 a 10 NaN
2 b 100 NaN
3 b 30 NaN
但是,如果我们将 df 重置为原始数据并将 group 列移动到索引,
df.set_index('group', inplace=True)
print(df)
data
group
a 5
a 10
b 100
b 30
然后分组求和,得到:
df['new'] = df.groupby('group')['data'].sum()
print(df)
data new
group
a 5 15
a 10 15
b 100 130
b 30 130
为什么列组不设置新列的值,而索引分组却设置了新列的值?
【问题讨论】:
标签: python pandas indexing group-by