繁体   English   中英

如何将行名转换为 Pandas 中的列

[英]How to convert row names into a column in Pandas

我有以下 excel 数据集:


         ($/bbl)      ($/bbl)      ($/bbl)
         crude_petro  crude_brent  crude_dubai
1960M01  1.63         1.63         1.63
1960M02  1.63         1.63         1.63
1960M03  1.63         1.63         1.63  

我想要做的是将行名crude_petro, crude_brent, crude_dubai转换为列,格式如下:

编辑 2

    unit        commodity       price    date
0   ($/bbl)     crude_petro     1.63     1960M01
1   ($/bbl)     crude_brent     1.63     1960M01
2   ($/bbl)     crude_dubai     1.63     1960M01

如何使用 pandas 实现这一目标?

编辑:这就是我阅读 excel 以可能解析这些值的方式

df = pd.read_excel(local_path, sheet_name='Monthly Prices', engine='openpyxl', skiprows=5, usecols="B:BT")

编辑 3:在我的最后一列中,数据正在生成与 NaN 值相关联的电子表格(源)中不存在的额外列。 例如商品SILVER输出'SILVER.1'、'SILVER.2'等。

尝试使用melt + sort_index

new_df = (
    df.melt(ignore_index=False, var_name=['unit', 'commodity'])
        .sort_index()
        .rename_axis('Date')
        .reset_index()
)

new_df

      Date     unit    commodity  value
0  1960M01  ($/bbl)  crude_petro   1.63
1  1960M01  ($/bbl)  crude_brent   1.63
2  1960M01  ($/bbl)  crude_dubai   1.63
3  1960M02  ($/bbl)  crude_petro   1.63
4  1960M02  ($/bbl)  crude_brent   1.63
5  1960M02  ($/bbl)  crude_dubai   1.63
6  1960M03  ($/bbl)  crude_petro   1.63
7  1960M03  ($/bbl)  crude_brent   1.63
8  1960M03  ($/bbl)  crude_dubai   1.63

使用的样本框架:

df = pd.DataFrame({
    ('($/bbl)', 'crude_petro'): {'1960M01': 1.63, '1960M02': 1.63,
                                 '1960M03': 1.63},
    ('($/bbl)', 'crude_brent'): {'1960M01': 1.63, '1960M02': 1.63,
                                 '1960M03': 1.63},
    ('($/bbl)', 'crude_dubai'): {'1960M01': 1.63, '1960M02': 1.63,
                                 '1960M03': 1.63}
})

df

            ($/bbl)                        
        crude_petro crude_brent crude_dubai
1960M01        1.63        1.63        1.63
1960M02        1.63        1.63        1.63
1960M03        1.63        1.63        1.63

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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