我有一个.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]
我不明白我做错了什么。有人能帮忙吗?
发布于 2020-09-28 09:46:12
您可以利用列表之间的两个空格。
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
参数接受多字符和正则分隔符。通常,这在将字符串分离到列时更为灵活。
发布于 2020-09-28 10:39:32
用单行你可以用熊猫阅读。
import pandas as pd
df = pd.read_csv(readfile, sep='\s\s')
https://stackoverflow.com/questions/64099596
复制相似问题