[英]Pandas Pivot Table MultiIndex Columns to Single Level
我有一个如下所示的熊猫数据框:
df =
COLUMN_NAME YEAR1 YEAR2 VALUE
0 Column1 2013 2014 0.042835
1 Column1 2014 2015 0.033600
2 Column2 2013 2014 0.004406
3 Column2 2014 2015 0.016900
...
对于每个 COLUMN_NAME、YEAR1 和 YEAR2,都会计算一个 VALUE。 我想对数据框进行分组,使其在 COLUMN_NAME 上是唯一的,其中的列如下所示:
df_desired =
COLUMN_NAME Value_from_2013_2014 Value_from_2014_2015 ...
0 Column1 0.042835 0.033600
1 Column2 0.004406 0.016900
...
我可以使用下面的代码实现我想要的东西,但它创建了一个 MultiIndex 列,我该如何实现呢? 谢谢您的帮助。
pd.pivot_table(df, 'VALUE', 'COLUMN_NAME', ['YEAR1', 'YEAR2'])
YEAR1 2013 2014
YEAR2 2014 2015
COLUMN_NAME
Column1 0.042835 0.0336
Column2 0.004406 0.0169
您可以使用to_flat_index
展平多to_flat_index
列,然后map
到str
并添加您的前缀:
s.columns = ["Value_from_"+"_".join(map(str, i)) for i in s.columns.to_flat_index()]
print (s)
Value_from_2013_2014 Value_from_2014_2015
COLUMN_NAME
Column1 0.042835 0.0336
Column2 0.004406 0.0169
df_agg = pd.pivot_table(df, 'VALUE', 'COLUMN_NAME', ['YEAR1', 'YEAR2'])
df_agg.columns = ['Value_from_' + str(df_agg.columns[i][0]) + '_' + str(df_agg.columns[i][1]) for i in range(len(df_agg.columns))]
如果我理解正确,您将获得所需的值,但不是所需的标签。 如果是这样,您可以使用df_desired.columns = ['Value_from_2013_2014', 'Value_from_2014_2015']
更改列名
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.