Python如何从pandas DataFrame的字符串单元格中提取多个浮点数值
失效原因
你使用的正则未匹配逗号两侧可能存在的空格,且未对小数点做转义,当字符串中逗号前后存在空格(大部分场景下列表格式的字符串都会带空格)时就会完全匹配失败,返回NaN。
解决方案
方法1:修正正则表达式
适配逗号两侧任意数量的空格,同时转义小数点保证匹配精度:
# 提取两个数值 res = df['column_name'].str.extract(r'(\d+\.\d+)\s*,\s*(\d+\.\d+)').astype('float') print(res)
如果需要自定义列名,可以直接赋值:
df[['num1', 'num2']] = df['column_name'].str.extract(r'(\d+\.\d+)\s*,\s*(\d+\.\d+)').astype('float')
方法2:直接解析列表字符串(更推荐)
如果单元格内容本身是合法的Python列表格式,直接用ast.literal_eval解析更稳妥,不需要调整正则即可适配任意长度的数值列表:
import ast # 解析字符串为列表后拆分多列 df[['num1', 'num2']] = df['column_name'].apply(ast.literal_eval).apply(pd.Series)
内容的提问来源于stack exchange,提问作者Hello there
相关产品推荐
相关产品推荐

