python pandas重命名列名开头为

时间:2019-03-22 14:30:30

标签: python pandas rename wildcard startswith

我有多个具有统一列名的Excel文件,除了一个。

一个文件称为EndOfMarchStatus,另一个文件称为EndofAprilStatus,依此类推。

我需要将列名称更改为只说EndofMonthStatus。真的没有答案,我可以找到匹配这个问题的答案。

使用通配符或startswith的某种形式的重命名命令可能会起作用。

我尝试过但没有用的东西是

sheet1df.columns.str.replace('Endof.*', 'EndOfMonthStatus')

sheet1df.rename(columns={sheet1df.filter(regex='*.Status').columns[0]: 'EndOfMonthStatus'}, inplace=True)

sheet1df.rename(columns={'^Status':'EndOfMonthStatus'}, inplace=True)

sheet1df.rename(columns=lambda x: x.replace('Endof%', 'EndOfMonthStatus'), inplace=True)  

2 个答案:

答案 0 :(得分:1)

您可以使用str.replace

df.columns = df.columns.str.replace('(?<=EndOf)(\w+)(?=Status)', 'Month')

答案 1 :(得分:0)

您可以这样做:

df = pd.DataFrame({"A":[1,2,3], "EndOfApril":[2,3,4]})
df.rename(columns = { i: "EndOfMonth" for i in  df.columns if i.startswith("EndOf") } )

输出:

    A   EndOfMonth
0   1   2
1   2   3
2   3   4