使用Pandas读取CSV:单列含所有列数据的拆分问题求助
解决Pandas读取单列表格并按空格拆分列的问题
嘿,我明白你碰到的问题了——这个CSV文件其实是空格分隔的文本格式,但不知道为啥被存成了只有一列"A"的结构,直接用默认的pd.read_csv()读肯定会把整行内容塞进一个单元格里,完全不是你想要的表格样子。
给你两个靠谱的解决办法,按需选就行:
方法1:读取时直接指定分隔符
既然数据是用空格分隔的,咱们直接告诉Pandas用空格当分隔符就行,还能顺便指定第一行是表头:
import pandas as pd # 用\s+匹配一个或多个空格,避免多余空格导致空列 data = pd.read_csv("/test.csv", sep='\s+', header=0) print(data.head())
这样Pandas会自动把第一行的"c1 c2 c3..."拆成列名,后面的数值也会乖乖对应到各列里,一步到位。
方法2:先读单列再手动拆分
如果方法1遇到特殊情况不好使(比如表头或数据行里有乱七八糟的空格),咱们就换个思路,先把整个单列读进来,再手动拆分:
import pandas as pd # 先把所有内容读成单列,自定义列名"A" df_raw = pd.read_csv("/test.csv", header=None, names=["A"]) # 把第一行的内容拆成列名列表 columns = df_raw.iloc[0, 0].split() # 把剩下的每一行按空格拆分,展开成多列 data = df_raw.iloc[1:, 0].str.split(expand=True) # 给拆分后的表格加上列名 data.columns = columns print(data.head())
这种方法更灵活,对付格式不规整的文件特别有用,哪怕行里有多余空格也能处理。
举个例子验证下
假设你的CSV内容是这样的:
A
c1 c2 c3
000 222 333
111 444 555
用上面的方法处理后,输出会是:
c1 c2 c3 0 000 222 333 1 111 444 555
完全就是你想要的按列拆分后的表格样子啦!
内容的提问来源于stack exchange,提问作者data_person
相关产品推荐
相关产品推荐

