[英]Splitting a column into multiple using regular expression
我有下表
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
您需要使用(.*)_(.*)
正則表達式模式的Series.str.extract
:
df[['recipe','sauce']]=df['favs'].str.extract(r'(.*)_(.*)', expand=True)
請參閱正則表達式演示。
(.*)_(.*)
正則表達式將最后一個_
之前的部分匹配並捕獲到第 1 組(使用第一個(.*)
),並將最后一個_
之后的部分捕獲到第二列(使用第二個(.*)
).
不需要正則表達式,您可以簡單地rsplit
限制為 1 個拆分:
df[['recipe','sauce']] = df['favs'].str.rsplit('_', n=1, expand=True)
output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.