使用Index.to_series 将列转换为Series 和Series.replace:
c = 'ab_sells_cde_104_frm, ab_sells_cde_105_frm, ab_sells_cde_120_frm'.split(', ')
df = pd.DataFrame(columns=c)
dict_2 = {'115': 'SERVICES',
'116': 'HEA',
'117': 'HOME',
'104': 'AI'}
df.columns = df.columns.to_series().replace(dict_2, regex=True)
print (df)
Empty DataFrame
Columns: [ab_sells_cde_AI_frm, ab_sells_cde_105_frm, ab_sells_cde_120_frm]
Index: []
或者如果需要通过str.replace 回电替换:
df.columns = df.columns.str.replace('\d+', lambda x: dict_2.get(x.group(0), x.group(0)), regex=True)
print (df)
Empty DataFrame
Columns: [ab_sells_cde_AI_frm, ab_sells_cde_105_frm, ab_sells_cde_120_frm]
Index: []
用长度为3的整数替换:
df.columns = df.columns.str.replace('\d{3}', lambda x: dict_2.get(x.group(0), x.group(0)), regex=True)
print (df)
Empty DataFrame
Columns: [ab_sells_cde_AI_frm, ab_sells_cde_105_frm, ab_sells_cde_120_frm]
Index: []