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]