Arrays 如何在多级列展平上翻转列名

Arrays 如何在多级列展平上翻转列名,arrays,pandas,string,dataframe,Arrays,Pandas,String,Dataframe,我有以下数据帧 AirPressure... WindDirection Date Location1 Location2.......Location8593 Location8594 Location8595 2010-01-01 xxx. xxx xxx xxx. xxx.

我有以下数据帧

                       AirPressure...                            WindDirection    
Date       Location1   Location2.......Location8593 Location8594 Location8595
2010-01-01 xxx.        xxx             xxx          xxx.         xxx.                
2010-01-02 xxx.        xxx             xxx          xxx.         xxx.              
2010-01-03 xxx.        xxx             xxx          xxx.         xxx.               
....
2010-01-01 xxx.        xxx             xxx          xxx.         xxx.              
...
2020-10-10 xxx.        xxx             xxx          xxx.         xxx.               
我正在努力使它成为下面的一个

Date       AirPressure-Location1 SoilMoisture-Location1.....WindDirection-Location8595
2010-01-01 xxx.                  xxx                        xxx
......
2020-10-10 xxx.                  xxx                        xxx

我运行以下命令

frame.columns = ['-'.join(col).strip() for col in frame.columns.values]
但是我得到的是

Date       Location1-AirPressure Location1-SoilMoisture.....Location8595-WindDirection
2010-01-01 xxx.                  xxx                        xxx
......
2020-10-10 xxx.                  xxx                        xxx


如何像上面那样翻转名称?

您可以使用
f-string
s:

frame.columns = [ f'{b}-{a}' for a, b in frame.columns]
或通过索引更改COL的顺序:

frame.columns = ['-'.join(col[::-1]).strip() for col in frame.columns]
或:


这两者之间有区别吗。使用frame.columns和frame.columns.values?@anarchy-如果使用
frame.columns.values
它会将列转换为numpy数组,但这不是必需的,因为它的工作方式与
frame.columns
相同,因此省略,因为简化了解决方案。
frame = frame.swaplevel(1, 0, axis=1)
frame.columns = ['-'.join(col).strip() for col in frame.columns]