python - 数据透视表和合并列与标题

标签 python pandas dataframe pivot melt

我的数据框如下:

 Ranges Relative_17-Sep Relative_17-Oct Relative_17-Nov
  <=20%  0.65            0.36            0.29
  >20%   99.35           99.64           99.71

我正在尝试找到一种方法将其转换为:

"Sep17<=20%" "Sep17>20%"   "Oct17<=20%" "Oct17>20%" "Nov17<=20%" "Nov17>20%"
 0.65          99.35        0.36            99.64     0.29        99.71

任何帮助。

谢谢

最佳答案

选项 1
融化

v = df.melt('Ranges')

df = pd.DataFrame(
    v['value'].values, 
    index=v['variable'].str.split('_').str[-1] + v['Ranges']
).T

df
   17-Sep<=20%  17-Sep>20%  17-Oct<=20%  17-Oct>20%  17-Nov<=20%  17-Nov>20%
0         0.65       99.35         0.36       99.64         0.29       99.71

选项 2
修改df.columns,然后进行堆叠操作。

df.columns = df.columns.str.split('_').str[-1]
v = df.set_index('Ranges').stack()

df = pd.DataFrame(
    v.values, 
    index=v.index.get_level_values(1) + v.index.get_level_values(0)
).T

df
   17-Sep<=20%  17-Oct<=20%  17-Nov<=20%  17-Sep>20%  17-Oct>20%  17-Nov>20%
0         0.65         0.36         0.29       99.35       99.64       99.71

关于python - 数据透视表和合并列与标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483777/

相关文章:

python - 计算一系列字符串中连续数字的组数

python - 需要将 Pandas 数据框中的一列数据拆分为不同的列

python - 如何在单独的模块中管理 peewee 数据库?

python - 在 EC2 上运行 mapreduce 作业时如何获取文件名?

python - Bigquery 根据时间/位置数据(当前行上方/下方的行)获取速度

python - Pandas dataframe 应用引用前一行来计算差异

python - 合并两个数据框,最多取两列

python - 通过 ModelForm 更新模型实例 : 'unicode' object has no attribute '_meta'

python - 如何在sklearn cross_validate函数的评分属性中传递参数?

python - 在不同列上排序后的 Pandas cumsum