![](/img/trans.png)
[英]Convert a pandas DataFrame to a dict with row and column name for each value
[英]Python Dataframe to convert column name as row value
我对 python 很陌生。 你能给我解决方案吗?
我有这样的输入:
Calendar X Y
0 2020-01-01 10 22
1 2020-02-01 15 45
2 2020-03-01 13 67
3 2020-04-01 33 89
预期的 output 是:
Type Calendar Act_Value
X 2020-01-01 10
X 2020-02-01 15
X 2020-03-01 13
X 2020-04-01 33
Y 2020-01-01 22
Y 2020-02-01 45
Y 2020-03-01 67
Y 2020-04-01 89
就像@GodWin 提到的那样, pd.melt()
是一种方法。 这是来自pandas
模块,它是 Python 中最流行的数据工具。 您可以从https://pandas.pydata.org/获得更多信息,这里是有关如何实现 output 的快速建议。
## import module
import pandas as pd
## create data frame
df = pd.DataFrame({
"Calendar":["2020-01-01","2020-02-01","2020-03-01","2020-04-01"],
"X":[10,15,13,33],
"Y":[22,45,67,89]})
## output
print(pd.melt(df, id_vars="Calendar", var_name="Type",value_name="Act_value"))
#################################
Calendar Type Act_value
0 2020-01-01 X 10
1 2020-02-01 X 15
2 2020-03-01 X 13
3 2020-04-01 X 33
4 2020-01-01 Y 22
5 2020-02-01 Y 45
6 2020-03-01 Y 67
7 2020-04-01 Y 89
导入相关库:
import numpy as np
import pandas as pd
复制您所说的 dataframe:
df = pd.DataFrame([{"Calendar": "2020-01-01", "X": 10, "Y": 22}, {"Calendar":
"2020-02-01", "X": 15, "Y": 45}, {"Calendar": "2020-03-01", "X": 13, "Y": 67},
{"Calendar": "2020-04-01", "X":33, "Y": 89}])
应用 pd.melt ( https://pandas.pydata.org/docs/reference/api/pandas.melt.html ) 以获得所需的结果:
df_unpivoted = df.melt(id_vars=['Calendar'], var_name='Type',
value_name='Act_value')
df_unpivoted.set_index('Type')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.