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
Goal:我目前有类似于输入 DF 的东西,并且希望将其转换为输出 DF。
- 输出 DF 的第 1 行等于唯一时间数据点。
- 输出 DF 的第一列等于唯一 ID。其余
- 中心点等于给定 id/时间的 Value 元素
我得到的最接近的是通过做这样的事情:
group_by = input_df.groupby('ID').agg({'Value':np.mean})
Or:
group_by = input_df.groupby('time').agg({'Value':np.mean})
这将使我按 ID 或时间汇总平均值,但我不知道如何同时执行这两项操作并仅提取该值。
您可以使用枢轴:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)