重命名包含子字符串的列 - Pandas
Rename column containing substring - Pandas
我需要重命名包含特定子字符串的列。在我的例子中,我使用的数据包含名为特定日期 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
我需要重命名包含特定子字符串的列。在我的例子中,我使用的数据包含名为特定日期 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