在PANDA中PIVOT_TABLE之后将索引重置为平面

2022-03-03 00:00:00 python pandas pivot-table

问题描述

我有以下数据帧df

           Datum    HH  DayPrecipitation
9377    2016-01-26  18  3
9378    2016-01-26  19  4
9379    2016-01-26  20  11
9380    2016-01-26  21  23
9381    2016-01-26  22  12

我使用

将其转换为宽格式
df.pivot_table(index = 'Datum', columns='HH' ,values = 'DayPrecipitation')

这给我留下了一个双列

     HH     18  19  20  21  22
  Datum                 
2016-01-26  3   4   11  23  12

我要使该列如下所示并重命名这些列:

   Datum  col1 col2  col3 col4 col5 col6            
2016-01-26  1    3    4    11   23   12
但是,当我使用reset_index时,它只是添加另一个索引列,而不会删除MULTI_INDEX。 有谁知道怎么实现这个表吗?如果您能帮忙,我们将不胜感激!


解决方案

您可以删除['DayPrecipitation']中的[]以避免MultiIndex in columns,然后按DataFrame.set_axis设置新列名,最后按DataFrame.reset_index将索引转换为列:

L = [f'col{x+1}' for x in range(df['HH'].nunique())]
df1 = (df.pivot_table(index = 'Datum', columns='HH' ,values = 'DayPrecipitation')
         .rename_axis(None,axis=1)
         .set_axis(L, inplace=False, axis=1)
         .reset_index())
print (df1)
        Datum  col1  col2  col3  col4  col5
0  2016-01-26     3     4    11    23    12

相关文章