从韩语文本字符串中提取整数,以其内容为条件并将其转换为 pandas 中的浮点数

extracting an integer from aKorean text string, conditional on its content and converting it to float in pandas

我遇到了以下问题:我有一个 pandas 数据框,其中一列是一串韩语文本,如下所示:

data = {'id': [1,2,3,4,5], 'age': ['3.5년령(추정)','3개월령','5일령(추정)','3일령','1.5개월령(추정)']}
df = pd.DataFrame(data)

有条件地根据字符串包含的内容,我需要以天为单位计算 age。括号中的文本 (추정) 可能会或可能不会出现在字符串中,它表示 "estimated"。括号前的文本可以是 년령(年)、개월령(月)或 일령(天)。最后,文本前的数字可以是整数或带一位或两位小数的浮点数。我需要提取数字并将其转换为以天为单位的年龄(四舍五入到小数点后 0 位),如下所示:

result = {'id': [1,2,3,4,5],'age': [1278, 90, 5, 3, 45]}
df1 = pd.DataFrame(result)

我试过使用正则表达式提取字符串的数字部分,如下所示,但它并没有涵盖所有情况,而且似乎也不太奏效。

df['age'].str.replace(r'\([추정]\)$', '')

如果有任何建议,我将不胜感激。谢谢。

使用:

d = {'년령': 365, '개월령' : 30, '일령' : 1}
pat = r'(\d*\.\d+|\d+)'
#replace by dictionary
b = df['age'].replace(d, regex=True)
#
a = df['age'].str.extract(pat, expand=False).astype(float)
#multiple together
df['age'] = b * a
print (df)
   id     age
0   1  1277.5
1   2    90.0
2   3     5.0
3   4     3.0
4   5    45.0