如何用Pandas将多行多列TXT转为带自定义表头的DataFrame
解决Pandas读取TXT数据合并为一列的问题
两种可行解决方案
方案1:读取文件时直接拆分列
如果还未读取文件,直接用pd.read_csv()并指定空白分隔符,同时跳过第一行的文件名:
- 使用
sep='\s+'匹配任意数量的空白字符(空格、制表符等) skiprows=1跳过第一行的文件名header=None表示文件本身没有表头,后续自定义列名
import pandas as pd # 读取TXT文件并拆分列 df = pd.read_csv('FSXC_20129_2024120000.txt', sep='\s+', skiprows=1, header=None) # 设置自定义表头 df.columns = ['ID_1', 'ID_2', 'ID_3', 'ID_4', 'ID_5', 'ID_6'] # 查看结果 print(df)
方案2:已读取为单列后拆分
如果已经将数据读入成了单列DataFrame,可通过字符串拆分处理:
- 用
str.split('\s+', expand=True)将每行内容按空白拆分成多列 - 跳过第一行的文件名
- 转换列数据类型为数值型(可选但推荐)
import pandas as pd # 假设已读取的单列数据存储在df_single中 df_single = pd.read_csv('FSXC_20129_2024120000.txt', header=None) # 拆分单列数据为多列 df_split = df_single[0].str.split('\s+', expand=True) # 跳过第一行的文件名,并设置自定义表头 df_split = df_split.iloc[1:] df_split.columns = ['ID_1', 'ID_2', 'ID_3', 'ID_4', 'ID_5', 'ID_6'] # 将列转换为数值类型 df_split = df_split.apply(pd.to_numeric, errors='coerce') # 查看结果 print(df_split)
关键注意事项
- 确保跳过第一行的文件名,避免它被当作数据行处理
- 使用
\s+作为分隔符能兼容不同数量的空格或制表符 - 转换数据类型为数值型可以方便后续的数据分析操作
内容的提问来源于stack exchange,提问作者shawn
相关产品推荐
相关产品推荐

