我有一个数据框,它的列名是'ah_ap'和'ah_as'。
基本上,我想做的就是交换下划线前的部分和下划线后的部分,这样列标题就是“ap_ah”和“as_ah”。
如果元素在列表中,我可以这样做,但我不知道如何将其应用于列名。
如果是列表,我的解决方案如下:
columns = ['AH_AP','AS_AS']
def rejig_col_names():
elements_of_header = columns.split('_')
new_title = elements_of_header[-1] + "_" + elements_of_header[0]
return new_title
我猜我需要将此应用于以下内容,但我不知道如何或如何引用df.columns中的单个列:
df.columns = df.columns.map()
谢谢你的帮助。谢谢:)
4条答案
按热度按时间byqmnocz1#
您可以这样做:
输入:
输出:
解释:
使用字符串访问器和“\”上的拆分方法
然后使用带索引切片反转的str访问器[::-1],可以反转列表的顺序
最后,使用字符串访问器和join,我们可以再次将列表连接在一起。
ukxgm1gy2#
你就快到了,你能行
除了使用列名作为参数调用函数外,请按如下方式更改它:
mzillmmw3#
另一个答案的替代方案。使用您的函数和
DataFrame.rename
```import pandas as pd
def rejig_col_names(columns):
elements_of_header = columns.split('')
new_title = elements_of_header[-1] + "" + elements_of_header[0]
return new_title
data = {
'A_B': [1, 2, 3],
'C_D': [4, 5, 6],
}
df = pd.DataFrame(data)
df.rename(rejig_col_names, axis='columns', inplace=True)
print(df)
elcex8rz4#
str.replace
也是通过交换捕获组的一个选项:从scottboston借用的示例输入
然后捕获“\u1”之前和之后的所有内容,并交换捕获组1和2。