You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将指定格式字符串转换为DataFrame?

问题描述

我有如下格式的字符串:

x = "24.55 26.22, 69.22 78.25, 66.25 45.98"

希望将其转换为如下结构的DataFrame:

A       B      A     B      A      B
24.55   26.22  69.22  78.25  66.25  45.98

我尝试了以下代码但出现错误:

import io
import pandas as pd
df1 = pd.read_csv(io.StringIO(x), sep=",")
df1 =  df1.groupby(level=[0,1]).cumcount().map({0 : 'x', 1 : 'y'})
错误原因分析
  1. 直接用read_csv按逗号分割后,每一列是带空格的字符串(比如"24.55 26.22"),无法直接用于后续分组操作。
  2. groupby(level=[0,1])完全不适用:刚读取的DataFrame没有多级索引,且逻辑方向与需求不符。
解决方法

步骤1:预处理字符串,拆分所有数值

先把字符串按逗号分割,再拆分每个部分的空格,得到扁平的数值列表并转为浮点数:

import pandas as pd

x = "24.55 26.22, 69.22 78.25, 66.25 45.98"
# 拆分逗号后再拆分空格,提取所有数值
values = list(map(float, ' '.join(x.split(',')).split()))

步骤2:构造目标DataFrame

生成重复的A/B列名,将数值列表转为单行数据,创建DataFrame:

# 生成重复的A、B列名(每两个数值对应一组A/B)
columns = ['A', 'B'] * (len(values) // 2)
# 创建单行DataFrame
df = pd.DataFrame([values], columns=columns)

完整代码

import pandas as pd

x = "24.55 26.22, 69.22 78.25, 66.25 45.98"

# 预处理拆分数值
values = list(map(float, ' '.join(x.split(',')).split()))
# 构造DataFrame
columns = ['A', 'B'] * (len(values) // 2)
df = pd.DataFrame([values], columns=columns)

print(df)

运行输出:

A      B      A      B      A      B
0  24.55  26.22  69.22  78.25  66.25  45.98

内容的提问来源于stack exchange,提问作者Mr Alchemist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:24:24