微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在Pandas Dataframe中聚合,转置和引入值

Input DF:

ID Time Value 
0   1    5
0   2    7
0   3    8
1   1    1
1   2    4
1   3    6

Output DF:
   1  2  3
0  5  7  8
1  1  4  6 

目标:我目前有类似于输入DF的东西,我希望将其转换为输出DF.

>输出DF的第1行等于唯一的时间数据点.
>输出DF的第1列等于唯一ID.剩余的
>中心点等于给定id /时间的Value元素

我最接近的是通过做这样的事情:

group_by = input_df.groupby('ID').agg({'Value':np.mean})

要么:

group_by = input_df.groupby('time').agg({'Value':np.mean})

这将使我获得由ID或Time汇总的聚合方式,但我无法弄清楚如何做到这两个并且只是拉入值.

解决方法:

你可以使用pivot:

df.pivot(index='ID', columns='Time', values='Value')
Out: 
Time  1  2  3
ID           
0     5  7  8
1     1  4  6

这假设时间/ ID对是唯一的.如果没有,您可以用pivot_table替换它并添加合适的聚合函数

df.pivot_table(index='ID', columns='Time', values='Value', aggfunc='first')
Out: 
Time  1  2  3
ID           
0     5  7  8
1     1  4  6

你的方法也适用于unstack:

df.groupby(['ID', 'Time'])['Value'].agg('mean').unstack()
Out: 
Time  1  2  3
ID           
0     5  7  8
1     1  4  6

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐