是否可以创建一个(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