有一个csv数据框,其中包含按小时间隔的属性及其值。并非每小时都会列出所有属性。看起来像这样:
time attribute value
2019.10.11. 10:00:00 A 10
2019.10.11. 10:00:00 B 20
2019.10.11. 10:00:00 C 10
2019.10.11. 10:00:00 D 13
2019.10.11. 10:00:00 E 12
2019.10.11. 11:00:00 A 11
2019.10.11. 11:00:00 D 8
2019.10.11. 11:00:00 E 17
2019.10.11. 12:00:00 A 13
2019.10.11. 12:00:00 B 24
2019.10.11. 12:00:00 C 11
2019.10.11. 12:00:00 E 17
我想将其每小时转换为一行,并且属性名称应随列一起显示其值。如果未列出属性,则该属性应为零或也可以留为空白等。熊猫是否提供了一种通过合并,连续或联接或其他方式使其自动化的方法,还是我必须手动实现?
我需要以下格式的数据集:
time A B C D E
2019.10.11. 10:00:00 10 20 10 13 12
2019.10.11. 11:00:00 11 0 0 8 17
2019.10.11. 12:00:00 13 24 11 0 17
感谢您阅读!
答案 0 :(得分:2)
df=df.pivot_table(columns='attribute',index='time' ,values ='value',fill_value=0)
print(df)
attribute A B C D E
time
2019.10.11. 10:00:00 10 20 10 13 12
2019.10.11. 11:00:00 11 0 0 8 17
2019.10.11. 12:00:00 13 24 11 0 17
答案 1 :(得分:1)
df = pd.DataFrame(data=data, columns=['time', 'attribute', 'value'])
print(df.set_index(['time', 'attribute']).unstack(level=-1).fillna(0))
输出
value
attribute A B C D E
time
2019.10.11. 10:00:00 10.0 20.0 10.0 13.0 12.0
2019.10.11. 11:00:00 11.0 0.0 0.0 8.0 17.0
2019.10.11. 12:00:00 13.0 24.0 11.0 0.0 17.0