繁体   English   中英

Python Dataframe 将列名转换为行值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM