【问题标题】:Using pivot / aggregation in dataframe [closed]在数据框中使用数据透视/聚合 [关闭]
【发布时间】:2020-02-06 10:23:11
【问题描述】:
有一个数据框,其中列名称值和日期格式为 dd
name value date
mark 200 1
john 300 1
mark 200 2
mark 200 2
mark 300 2
john 300 3
john 400 2
使用pivot和聚合需要使用pandas转换成this
date name count(date) value
1 mark 1 200
2 mark 3 700
1 john 1 300
2 john 2 300
3 john 1 400
【问题讨论】:
标签:
python
pandas
dataframe
group-by
pivot
【解决方案1】:
将GroupBy.agg 与元组列表中的聚合函数一起使用:
df1 = (df.groupby(['date','name'])['value']
.agg([('count', 'size'), ('value','sum')])
.reset_index())
print (df1)
date name count value
0 1 john 1 300
1 1 mark 1 200
2 2 john 1 400
3 2 mark 3 700
4 3 john 1 300
另一个在 pandas 0.25+ 中使用named aggregations 的解决方案:
df1 = (df.groupby(['date','name'])
.agg(count=('date', 'size'), value= ('value','sum'))
.reset_index())
print (df1)
date name count value
0 1 john 1 300
1 1 mark 1 200
2 2 john 1 400
3 2 mark 3 700
4 3 john 1 300