用regex + if/else语句提取



是否可以创建一个(def)函数&从1列(有50行)提取特定的值,并使用正则表达式与if/else语句?

我需要提取以下字符串,如if/else语句

d*s*milliliter
d*s*liter
d*s*ounce
d*s*kilogram
d*s*fluids*ounce

如果没有找到匹配,可以返回为'None'

我下面的代码目前看起来非常简单,只是提取。但是我不能够弄清楚如何在else/if/return语句中编码它。

def extract_data(df):
pattern = '(d*s*milliliter|d*s*liter|d*s*ounce|d*s*kilogram|d*s*fluids*ounce)'
return df.str.extract(pattern)

列名为"Unit">

示例

data = {'Unit': {0: '\d*\s*milliliter', 1: '\d*\s*liter', 2: '\d*\s*ounce', 
3: '\d*\s*kilogram', 4: '\d*\s*fluid\s*ounce', 5: '\d*\s*nanosecond'}}
df = pd.DataFrame(data)

df

Unit
0   d*s*milliliter
1   d*s*liter
2   d*s*ounce
3   d*s*kilogram
4   d*s*fluids*ounce
5   d*s*nanosecond
代码

当不匹配时,str.extract不需要if/else来提取NaN。

pat = r'(d*s*milliliter|d*s*liter|d*s*ounce|d*s*kilogram|d*s*fluids*ounce)'
out = df['Unit'].str.extract(pat)

out

0
0   milliliter
1   liter
2   ounce
3   kilogram
4   ounce
5   NaN

最新更新