且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 pandas 堆叠之前动态重命名列?

更新时间:2023-11-22 23:24:10

我认为需要 DataFrame.add_prefix :

I think need Series.unstack with DataFrame.add_prefix:

df = s.unstack().add_prefix('der_value_')
print (df)
Country     der_value_Afghanistan  der_value_Albania  der_value_Argentina
year_month                                                               
2008-01                         2                  3                    4
2008-02                         3                  4                    5

对于index到列中添加 DataFrame.reset_index :

For index to column add DataFrame.rename_axis with DataFrame.reset_index:

df = s.unstack().add_prefix('der_value_').rename_axis(None, axis=1).reset_index()
print (df)
  year_month  der_value_Afghanistan  der_value_Albania  der_value_Argentina
0    2008-01                      2                  3                    4
1    2008-02                      3                  4                    5


也可以通过


Modify MultiInex before unstack is also possible by MultiIndex.from_arrays:

a = s.index.get_level_values(0)
b = 'der_value_' + s.index.get_level_values(1)
s.index = pd.MultiIndex.from_arrays([a, b], names=s.index.names)
print (s)
year_month  Country              
2008-01     der_value_Afghanistan    2
            der_value_Albania        3
            der_value_Argentina      4
2008-02     der_value_Afghanistan    3
            der_value_Albania        4
            der_value_Argentina      5
Name: a, dtype: int64

df = s.unstack()
print (df)
Country     der_value_Afghanistan  der_value_Albania  der_value_Argentina
year_month                                                               
2008-01                         2                  3                    4
2008-02                         3                  4                    5