我有下表
df = pd.DataFrame({'favs':{0:'chicken_panfry1_t360_ketchup',
1:'chicken_bake2_t450_out_bbq',
2:'chicken_boiled2_season_gravy'}})
看起來像這樣
favs
0 chicken_panfry1_t360_ketchup
1 chicken_bake2_t450_out_bbq
2 chicken_boiled2_season_gravy
我想在最后一個下劃線處拆分列以創建 2 個看起來像這樣的新列。
favs recipe sauce
0 chicken_panfry1_t360_ketchup chicken_panfry1_t360 ketchup
1 chicken_bake2_t450_out_bbq chicken_bake2_t450_out bbq
2 chicken_boiled2_season_gravy chicken_boiled2_season gravy
這是我嘗試過的
df[['recipe','sauce']]=df['favs'].str.split(r'.*_', expand=True)
這會正確創建醬汁列,但配方列是空白的。它看起來像這樣。不確定如何糾正它。
favs recipe sauce
0 chicken_panfry1_t360_ketchup ketchup
1 chicken_bake2_t450_out_bbq bbq
2 chicken_boiled2_season_gravy gravy
uj5u.com熱心網友回復:
您需要Series.str.extract使用(.*)_(.*)正則運算式模式:
df[['recipe','sauce']]=df['favs'].str.extract(r'(.*)_(.*)', expand=True)
請參閱正則運算式演示。
正(.*)_(.*)則運算式匹配并捕獲最后一個之前的部分_到第 1 組(第一個(.*))和最后一個之后的部分_到第二列(第二個(.*))。
uj5u.com熱心網友回復:
不需要正則運算式,您可以簡單地rsplit限制為 1 個拆分:
df[['recipe','sauce']] = df['favs'].str.rsplit('_', n=1, expand=True)
輸出:
favs recipe sauce
0 chicken_panfry1_t360_ketchup chicken_panfry1_t360 ketchup
1 chicken_bake2_t450_out_bbq chicken_bake2_t450_out bbq
2 chicken_boiled2_season_gravy chicken_boiled2_season gravy
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447942.html
上一篇:我不希望列名作為不同字母的字串
