我有这个DataFrame:
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()
组合在一起但不成功的不同解决方案。有什么好的建议吗?
谢谢!
答案 0 :(得分:1)
选项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,如果则需要使用。
答案 1 :(得分:1)
您也可以使用char*
:
void*