gpt4 book ai didi

python - Pandas 数据帧 : groupby then transpose

转载 作者:行者123 更新时间:2023-12-01 00:21:59 25 4
gpt4 key购买 nike

我有这个数据帧:

df = pd.DataFrame({'1-sensor':['608', '608', '2158', '2158'],
'2-day':['2017-12-11', '2017-12-12', '2017-12-11', '2017-12-12'],
'3-voltage':[30, 31, 28, 29]})

df:
  1-sensor       2-day  3-voltage
0 608 2017-12-11 30
1 608 2017-12-12 31
2 2158 2017-12-11 28
3 2158 2017-12-12 29

我想让它看起来像这样:
pd.DataFrame({'1-sensor':['608', '2158'],
'2017-12-11':[30, 28],
'2017-12-12':[31, 29]})

df:
  1-sensor  2017-12-11  2017-12-12
0 608 30 31
1 2158 28 29

我尝试了不同的解决方案结合 .groupby('sensor').unstack()但没有成功。有什么好的建议吗?

谢谢!

最佳答案

选项 1
使用 pivot ,如果没有聚合。这实际上更有效 -

df.pivot(index='1-sensor', columns='2-day', values='3-voltage')

2-day 2017-12-11 2017-12-12
1-sensor
2158 28 29
608 30 31

如果要执行任何聚合,请使用 pivot_table并包括 aggfunc=... .

选项 2
另一个解决方案 set_index + unstack ——
df.set_index(['1-sensor', '2-day']).unstack()

3-voltage
2-day 2017-12-11 2017-12-12
1-sensor
2158 28 29
608 30 31

如果需要聚合,则 groupby + unstack会做的。你离得这么近。
df.groupby(['1-sensor', '2-day'], sort=False).sum().unstack()  

3-voltage
2-day 2017-12-11 2017-12-12
1-sensor
608 30 31
2158 28 29

替换 sum使用您想要使用的 aggfunction,如果您需要使用一个。

关于python - Pandas 数据帧 : groupby then transpose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47891649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com