从大熊猫的字符串中提取最多三个数字

时间:2020-07-28 08:02:20

标签: python regex pandas

我在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]

1 个答案:

答案 0 :(得分:0)

我发现最适合我的解决方案是将','拆分为一个新的数据框。然后将其转换为数字,对其求和并将该列合并回旧的数据框。

df_2 = df['Numbers'].str.split(', ', expand=True)

df_2[0] = pd.to_numeric(df_2[0], errors='coerce')
df_2[1] = pd.to_numeric(df_2[1], errors='coerce')
df_2[2] = pd.to_numeric(df_2[2], errors='coerce')

df_2['Value'] = df_2[0] + df_2[1] + df_2[2]

df = df.merge(df_2['Value'], how='left', left_index=True, right_index=True)