为了账号安全,请及时绑定邮箱和手机立即绑定

使用Pandas处理可变数量的列-Python

使用Pandas处理可变数量的列-Python

暮色呼如 2019-09-24 10:48:34
我有一个看起来像这样的数据集(最多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 )

我想它可以工作,但不是以最优雅的方式进行。


查看完整回答
反对 回复 2019-09-24
?
哆啦的时光机

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)


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 515 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信