在熊猫的单个数据框列上使用多个正则表达式

时间:2020-05-04 07:12:39

标签: python regex pandas dataframe

我有一列名为配料的列,其中有多个项目。我如何将它们分别分成不同的列?

Eg:    Type      Ingredients
       Hybrid    18.7% THC
                 1.62% Total Terpenes
                 0.61% Myrcene
       Indica    0.61% Myrcene
                 0.35% Ocimene
                 0.18% Limonene

我想将成分列拆分为THC,Mycrene,Ocimene,Limonene等多个列,每个列都描述其百分比

1 个答案:

答案 0 :(得分:2)

我认为您需要Series.str.split\s+来按百分比分配一个或多个空格,分配给新列,然后向前填充type列的缺失值,最后用{{3 }}:

df[['per','ingr']] = df['Ingredients'].str.split('%\s+', expand=True)
df['Type'] = df['Type'].replace('', np.nan).ffill()

df = df.pivot('Type','ingr','per').astype(float)
print (df)
ingr   Limonene Myrcene Ocimene   THC Total Terpenes
Type                                                
Hybrid      NaN    0.61     NaN  18.7           1.62
Indica     0.18    0.61    0.35   NaN            NaN