【发布时间】:2020-11-17 14:59:34
【问题描述】:
我在 pandas 中有一个列,它可以包含一到三个字符串格式的数字,我需要先提取然后总结。数字用逗号分隔,可以是浮点数,用点表示。
第二个问题是浮点数包含的小数位数过多。
df['Numbers'] = ['0, 0, 15', '0', '456.2345, 0, 23.1543', '512']
整数应该按原样提取。
浮点数应具有以下格式“\d+\.\d\d”(限制为两位小数,但不能向上或向下舍入)。
理想的输出应该是这样的:
df['number1'] = [0, 0, 456.23, 512]
df['number2'] = [0, NaN, 0, NaN]
df['number3'] = [15, NaN, 23.15, NaN]
【问题讨论】:
-
也许使用像
r"[^,;]+"这样的正则表达式匹配,然后在它们上使用Float可能会有所帮助。 -
再次仅提取点后的两位小数,您可以使用如下正则表达式匹配:
r"([0-9]{,}\.[0-9]{2})"