我有这样的数据帧:
df=pd.DataFrame(data={'2021-11-21':['10','20'],'2021-11-14':['39','21']})
df
2021-11-21 2021-11-14
10 39
20 21
我想要像这样重命名列:
curr_week_2021-11-21 prev_week_2021-11-14
10 39
20 21
我试过这个:
df_cols=df.columns.to_list()
df=df.rename(columns={'2021-11-21':'curr_week_'+df_cols[0],'2021-11-14':'prev_week_'+df_cols[1]})
但它没有起作用。
如果要使用rename
,请创建dict映射:
df = df.rename(columns={c: f"{p}_{str(c)}"
for c, p in zip(df.columns, ['curr_week', 'prev_week'])})
print(df)
# Output:
curr_week_2021-11-21 prev_week_2021-11-14
0 10 39
1 20 21
使用任意前缀列表进行编程的一种方法是使用map
/zip
/join
:
prefixes = ['curr_week', 'prev_week']
df.columns = map('_'.join, zip(prefixes, df.columns))
输出:
curr_week_2021-11-21 prev_week_2021-11-14
0 10 39
1 20 21