首页 > 解决方案 > 如果 pandas 中没有其他唯一列,如何将多列转换为单独的行/值?

问题描述

以下是示例

费率、价值 2019Q01 费率、价值 2019 年 Q02 费率、价值 2019Q03 费率、价值 2019Q04 销售额,价值 2019Q01 销售额,价值 2019Q02 销售额,价值 2019Q03 销售额,价值 2019Q04
100 150 200 300 400 450 500 600

结果应该是

时期 费率、价值 销售额、价值
2019Q01 100 400
2019Q02 150 450
2019Q03 200 500
2019Q04 300 600

我已经尝试过融化和wide_to_long,但无法得到结果。谢谢

标签: pythonpandasnumpydata-sciencebackend

解决方案


通过columns属性尝试,然后stack()

df.columns=df.columns.str.replace('values','').str.split(', ',expand=True)
df=df.stack().droplevel(0).rename_axis(index='Period').add_suffix(', values').reset_index()

或按照建议@Cytorak

df.columns = df.columns.str.rsplit(' ', 1, expand=True)
df=df.stack().droplevel(0).rename_axis(index='Period').reset_index()

的输出df

    Period      Rates, values   Sales, values
0   2019Q01     100             400
1   2019Q02     150             450
2   2019Q03     200             500
3   2019Q04     300             600

推荐阅读