我有一个.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]
我不明白我做错了什么。有人可以帮忙吗?
答案 0 :(得分:1)
您可以利用列表之间的两个空格
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]
widths
参数的 pd.read_fwf
会试图推断出固定宽度。但是第一个列表的长度有所不同。没有将每行分成两列的固定宽度。
如果您的数据没有定界符,但每个值的字母数固定,则widths
参数非常有用。 40年前,这是一种常见的数据格式。
# data.txt
20200810ITEM02PRICE30COUNT001
20200811ITEM03PRICE31COUNT012
20200812ITEM12PRICE02COUNT107
pd.read_csv
sep
参数接受多字符和正则表达式定界符。通常,将字符串分隔为列更灵活。
答案 1 :(得分:0)
通过一行您可以使用熊猫阅读
import pandas as pd
df = pd.read_csv(readfile, sep='\s\s')