我需要重命名包含特定子字符串的列。就我而言,我使用的数据包含名为特定日期 dd/mm/yyyy 的列。我想根据列名称的 yyyy 重命名该列(例如 30/06/2020 重命名 FY1920)。
我尝试过的方法如下:
d.rename(columns = lambda x: 'FY1920' if x.endswith('2019') else x)
也尝试过:
d.columns.str.contains('2019')
d.rename(lambda x:'FY1920' if any(k in x for k in keys) else x, axis=1)
我确信有一个简单的方法。有什么想法吗?
谢谢:)
最佳答案
rename
无法就地工作,您需要将结果分配回来:
df = pd.DataFrame('x', index=[0, 1], columns=['1/1/2019', '1/1/2020'])
df
1/1/2019 1/1/2020
0 x x
1 x x
df2 = df.rename(columns=lambda c: 'FY1920' if c.endswith('2019') else c)
df2
FY1920 1/1/2020
0 x x
1 x x
另一种选择是使用set_axis
或直接赋值:
df.set_axis(
labels=['FY1920' if c.endswith('2019') else c for c in df],
axis=1,
inplace=True)
# or
# df.columns = ['FY1920' if c.endswith('2019') else c for c in df]
df
FY1920 1/1/2020
0 x x
1 x x
关于python - 重命名包含子字符串的列 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65332135/