Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫将文本文件读入数据框_Python_Pandas - Fatal编程技术网

Python 熊猫将文本文件读入数据框

Python 熊猫将文本文件读入数据框,python,pandas,Python,Pandas,我有一个.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\u fwf(readfile,header=None)读入两列的数据帧 它不是两列,而是一个包含三列的数据框,有时会将第一个数字列表中的每一列读取为五列 0 1 2 0 [7, 9, 20, 30, 50] [1-8] 1 [9,

我有一个.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\u 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]

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

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

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


如果没有显式的
宽度
参数,则尝试推断固定宽度。但第一份清单的长度各不相同。没有固定的宽度将每行分隔为两列。
如果数据没有分隔符,但每个值有固定的字母数,
widths
参数非常有用。40年前,这是一种通用的数据格式

# data.txt
20200810ITEM02PRICE30COUNT001
20200811ITEM03PRICE31COUNT012
20200812ITEM12PRICE02COUNT107

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

通过单行,您可以使用pandas进行读取

import pandas as pd
df = pd.read_csv(readfile, sep='\s\s')

请允许我说服你解释一下为什么会有这种不同。它确实解决了这个问题,加上一个简短的解释。非常有用。非常感谢。我想使用read_csv还有一个额外的好处,那就是可以忽略空行,这与read_fwf不兼容
import pandas as pd
df = pd.read_csv(readfile, sep='\s\s')