我有列名稱,例如:
ab_sells_cde_104_frm, ab_sells_cde_105_frm, ab_sells_cde_120_frm
我也有一個像:
dict_2 = {'115': 'SERVICES',
'116': 'HEA',
'117': 'HOME',
'104': 'AI'}
我希望用這個 dict 替換列標題中的 3 位數字。我不確定我是如何嘗試的:
df.replace(dict_2, regex=True)
這不做任何事情。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您可以使用簡單的串列理解re.sub:
import re
df.columns = [re.sub('\d ', lambda m: dict_2.get(m.group(0), m.group(0)), s)
for s in df.columns]
輸出:
ab_sells_cde_AI_frm ab_sells_cde_105_frm ab_sells_cde_120_frm
0 NA NA NA
uj5u.com熱心網友回復:
使用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: []
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373959.html
上一篇:在VB.NET中將具有重復值的DataTable轉換為Dictionary(ofString,List(ofObject))的正確方法
