读取文本文件创建Pandas DataFrame并转CSV遇问题求助
解决Pandas读取TXT文件仅生成一列的问题
问题根源
你的TXT文件使用空格作为字段分隔符,但Pandas默认以逗号为分隔符,导致整行被识别为单个列;同时第一行的列名格式是column1:Name这类带标识的结构,需要提取出实际可用的列名(Name、Age)。
解决方案步骤
- 指定正确的分隔符:用
sep参数告知Pandas以空格(或任意空白字符)拆分字段 - 处理列名:从第一行的
columnX:列名格式中提取出真实列名
具体代码实现
假设你的input.txt内容如下:
column1:Name column2:Age raju 20 kanu 24
执行以下代码即可解决问题:
import pandas as pd # 读取文件并处理列名 with open('input.txt', 'r') as f: # 提取第一行的列名部分 header = f.readline().strip() # 拆分后提取:后面的真实列名 columns = [item.split(':')[1] for item in header.split()] # 读取数据行,用任意空白字符作为分隔符,跳过第一行列名行 df = pd.read_csv('input.txt', sep='\s+', skiprows=1, names=columns) # 转换为CSV文件(不保留索引列) df.to_csv('output.csv', index=False)
验证生成的CSV内容
最终output.csv会被正确拆分为两列:
Name,Age raju,20 kanu,24
简化写法(列名格式固定时适用)
如果确认列名行的分隔符是单个空格,也可以直接读取后重命名列:
import pandas as pd df = pd.read_csv('input.txt', sep=' ') # 批量重命名列 df.columns = [col.split(':')[1] for col in df.columns] df.to_csv('output.csv', index=False)
注意:如果TXT中字段间存在多个空格,使用sep='\s+'更稳妥,能避免生成多余的空列。
内容的提问来源于stack exchange,提问作者Nandish Shah
相关产品推荐
相关产品推荐

