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

从列表创建Pandas DataFrame仅返回1列,如何拆分出4列?

问题描述

我的input.txt内容如下:

040525 $$$$$   9999         12345
 040525 $$$$$   8888         12345
 040525 $$$$$   7777         12345
 040525 $$$$$   6666         12345

因为预处理限制,没法直接用pd.read_csv,只能先把文件内容读成列表再转DataFrame,代码如下:

data_list = []
with open('input.txt', 'r') as data:
    for line in data:
        data_list.append(line.strip())
df = pd.DataFrame(data_list)

但这样每行都被识别成单独一列,输出结果如下:

print(df.shape)
print(df)
print(df.columns.tolist())

# 输出:
(4, 1)
                                   0
0  040525 $$$$$   9999         12345
1  040525 $$$$$   8888         12345
2  040525 $$$$$   7777         12345
3  040525 $$$$$   6666         12345
[0]

需要把这个DataFrame拆分成4列,期望输出:

(4, 4)
       a      b     c      d
0  40525  $$$$$  9999  12345
1  40525  $$$$$  8888  12345
2  40525  $$$$$  7777  12345
3  40525  $$$$$  6666  12345
['a', 'b', 'c', 'd']
解决方案

方法1:拆分现有单列DataFrame

直接对已有的单列数据用str.split()分割,指定expand=True把分割结果扩展成多列,再重命名列名:

import pandas as pd

# 原有读入代码
data_list = []
with open('input.txt', 'r') as data:
    for line in data:
        data_list.append(line.strip())
df = pd.DataFrame(data_list)

# 拆分列并重命名
df = df[0].str.split(expand=True)
df.columns = ['a', 'b', 'c', 'd']

# 可选:去掉a列前导的0,不需要的话删掉这行
df['a'] = df['a'].str.lstrip('0')

# 验证输出
print(df.shape)
print(df)
print(df.columns.tolist())

方法2:读文件时直接拆分

在读入每行的时候就按空白字符分割成列表,这样转成DataFrame时直接就是多列,效率更高:

import pandas as pd

data_list = []
with open('input.txt', 'r') as data:
    for line in data:
        # 按任意数量空白字符分割,自动忽略连续空格
        split_line = line.strip().split()
        data_list.append(split_line)

# 直接创建带列名的DataFrame
df = pd.DataFrame(data_list, columns=['a', 'b', 'c', 'd'])

# 可选:去掉a列前导的0
df['a'] = df['a'].str.lstrip('0')

# 验证输出
print(df.shape)
print(df)
print(df.columns.tolist())

说明:split()不带参数时,会自动按任意数量的空白字符(空格、制表符等)分割,完美匹配你的文件格式。如果需要保留a列的前导0,删掉处理前导0的代码行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:33:12