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/time 的 Value 元素
我最接近的是做这样的事情:
group_by = input_df.groupby('ID').agg({'Value':np.mean})
或者:
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
关于python - 在 Pandas Dataframe 中聚合、转置和提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981922/