1

我有点卡在以下问题上:我有一个熊猫数据框,其中一列是韩文的一串文本,如下所示:

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

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

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

我尝试使用正则表达式提取字符串的数字部分,如下所示,但它并没有涵盖所有情况,而且似乎也不能很好地工作。

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

我将不胜感激任何建议。谢谢你。

4

1 回答 1

2

利用:

d = {'년령': 365, '개월령' : 30, '일령' : 1}
pat = r'(\d*\.\d+|\d+)'
#replace by dictionary
b = df['age'].replace(d, regex=True)
#https://stackoverflow.com/a/4703409/2901002
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
于 2018-08-12T11:18:24.610 回答