我有以下熊貓資料框:
import pandas as pd
foo_dt = pd.DataFrame({'var_1': ['filter coffee', 'american cheesecake', 'espresso coffee', 'latte tea'],
'var_2': ['coffee', 'coffee black', 'tea', 'strawberry cheesecake']})
和以下字典:
foo_colors = {'coffee': 'brown', 'cheesecake': 'white', 'tea': 'green'}
我要添加在兩列foo_dt(color_var_1和color_var_2),其值將是相應value的的foo_colors字典,其對應于key當根據key是in該列的值var_1或var_2分別。
編輯
換句話說,對于中的每個鍵foo_colors ,檢查兩列var_1&中“它包含”的位置var_2,然后將字典的相應值作為相應列 ( color_var_1& color_var_2) 的值給出
我生成的資料框如下所示:
var_1 var_2 color_var_1 color_var_2
0 filter coffee coffee brown brown
1 american cheesecake coffee black white brown
2 espresso coffee tea brown green
3 latte tea strawberry cheesecake green white
知道我該怎么做嗎?
uj5u.com熱心網友回復:
使用Series.str.extract了會首先匹配的子通過參加創建|的正則運算式or的字典鍵與Series.map按字典:
pat = '|'.join(r"\b{}\b".format(x) for x in foo_colors)
for c in ['var_1','var_2']:
foo_dt[f'color_{c}'] = foo_dt[c].str.extract(f'({pat})', expand=False).map(foo_colors)
print(foo_dt)
var_1 var_2 color_var_1 color_var_2
0 filter coffee coffee brown brown
1 american cheesecake coffee black white brown
2 espresso coffee tea brown green
3 latte tea strawberry cheesecake green white
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364707.html
