如何在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'})
错误原因分析
- 直接用
read_csv按逗号分割后,每一列是带空格的字符串(比如"24.55 26.22"),无法直接用于后续分组操作。 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
相关产品推荐
相关产品推荐

