我有一个看起来像这样的数据集(最多5列-但可以更少)1,2,31,2,3,41,2,3,4,51,21,2,3,4....我正在尝试使用pandas read_table将其读取到5列数据框中。我想读这篇,无需额外按摩。如果我尝试import pandas as pdmy_cols=['A','B','C','D','E']my_df=pd.read_table(path,sep=',',header=None,names=my_cols)我收到一个错误-“列名有5个字段,数据有3个字段”。有什么方法可以让熊猫在读取数据时为缺少的列填写NaN?
3 回答

潇湘沐
TA贡献1816条经验 获得超6个赞
我也很想知道这是否可行,从文档看来似乎并非如此。您可能要做的是逐行读取文件,并将每次读取连接到一个DataFrame:
import pandas as pd
df = pd.DataFrame()
with open(filepath, 'r') as f:
for line in f:
df = pd.concat( [df, pd.DataFrame([tuple(line.strip().split(','))])], ignore_index=True )
我想它可以工作,但不是以最优雅的方式进行。

哆啦的时光机
TA贡献1779条经验 获得超6个赞
好。不知道这有多有效-但这就是我所做的。很想知道是否有更好的方法可以做到这一点。谢谢 !
from pandas import DataFrame
list_of_dicts=[]
labels=['A','B','C','D','E']
for line in file:
line=line.rstrip('\n')
list_of_dicts.append(dict(zip(labels,line.split(','))))
frame=DataFrame(list_of_dicts)
添加回答
举报
0/150
提交
取消