首页 > 解决方案 > 熊猫将文本文件读入数据框

问题描述

我有一个 .txt 文件

[7, 9, 20, 30, 50]  [1-8]
[9, 14, 27, 31, 45]  [2-5]
[7, 10, 22, 27, 38]  [1-7]

我试图读入两列的数据框,df = pd.read_fwf(readfile,header=None) 而不是两列,它形成一个三列的数据框,有时将第一个数字列表中的每一个读入五列

    0              1      2
0   [7, 9, 20, 30, 50]  [1-8]
1   [9, 14, 27, 31, 45] [2-5]
2   [7, 10, 22, 27, 38] [1-7]

我不明白我做错了什么。有人可以帮忙吗?

标签: pythonpandas

解决方案


您可以利用列表之间的两个空格

pd.read_csv(readfile, sep='\s\s', header=None, engine='python')

出去:

                     0      1
0   [7, 9, 20, 30, 50]  [1-8]
1  [9, 14, 27, 31, 45]  [2-5]
2  [7, 10, 22, 27, 38]  [1-7]

pd.read_fwf没有明确的widths参数试图推断固定的宽度。但第一个列表的长度各不相同。没有固定的宽度将每行分成两列。
如果您的数据没有分隔符但每个值的字母数固定,则该widths参数非常有用。40 年前,这是一种常见的数据格式。

# data.txt
20200810ITEM02PRICE30COUNT001
20200811ITEM03PRICE31COUNT012
20200812ITEM12PRICE02COUNT107

pd.read_csv sep参数接受多字符和正则表达式分隔符。通常,将字符串分隔到列更灵活。


推荐阅读