如何解决如何将列名称附加到行中,并在其旁边保留列的值?
我想为数据框添加列名(将是一个日期),并在其旁边保留其行值。我从这种数据框开始:
Attribute | State | Metric | 2020-05-01 | 2020-05-02 | 2020-05-03 | ...
Attribute1| A | 12 | 360 | 550 | 650 | ....
Attribute1| A | 14 | 200 | 300 | 900 | ....
Attribute1| B | 18 | 400 | 700 | 100 | ....
Attribute2| B | 20 | 120 | 900 | 120 | ....
所以我按“属性”和“状态”分组,对其余部分求和并得到:
Attribute | State | Metric | 2020-05-01 | 2020-05-02 | 2020-05-03 | ...
Attribute1| A | sum | sum | sum | sum | ....
Attribute1| B | sum | sum | sum | sum | ....
Attribute2| B | sum | sum | sum | sum | ....
现在,我需要更改此表以适合Excel中的数据透视表,因此我需要将这些列作为行放置,同时保持值不变。该怎么做?
所需的输出:
Attribute | State | Metric | Date | ValueForDate
Attribute1| A | sum | 2020-05-01 | #
Attribute1| A | sum | 2020-05-02 | #
Attribute1| A | sum | 2020-05-03 | #
Attribute1| B | sum | 2020-05-01 | #
.
.
.
有人知道如何实现此输出吗?在此先感谢您,以防万一我的问题难以理解。
解决方法
您可以使用melt
进行此操作:
df = df.groupby(by=['Attribute','State'],as_index=False).sum()
df = pd.melt(df,id_vars=['Attribute','State','Metric'],var_name='Date')
print(df)
Attribute State Metric Date value
0 Attribute1 A 26 2020-05-01 560
1 Attribute1 B 18 2020-05-01 400
2 Attribute2 B 20 2020-05-01 120
3 Attribute1 A 26 2020-05-02 850
4 Attribute1 B 18 2020-05-02 700
5 Attribute2 B 20 2020-05-02 900
6 Attribute1 A 26 2020-05-03 1550
7 Attribute1 B 18 2020-05-03 100
8 Attribute2 B 20 2020-05-03 120
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。