给料空Pandas.dataframe有几个文件

2024-06-02 05:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想提供一个空的dataframe附加几个相同类型和结构的文件。但是,我看不出这里出了什么问题:

def files2df(colnames, ext):
    df = DataFrame(columns = colnames)
    for inf in sorted(glob.glob(ext)):
        dfin = read_csv(inf, sep='\t', skiprows=1)
        print(dfin.head(), '\n')
        df.append(dfin, ignore_index=True)
    return df

生成的数据帧为空。有人能帮帮我吗?在

^{pr2}$

Tags: columns文件类型dataframedffordef结构
2条回答

在数据框追加(dfin,ignore_index=True)返回一个新的数据帧,它不会就地更改df。 使用df=数据框追加(dfin,ignore_index=True)。但即使有这样的改变,我想这也不能满足你的需要。Append在轴=1(列)上扩展了一个帧,但我相信您希望合并轴=0(行)上的数据

在这个场景中(读取多个文件并使用所有数据创建一个数据帧),我将使用熊猫海螺(). 下面的代码将为您提供一个由colnames命名的列的框架,行由csv文件中的数据组成。在

def files2df(colnames, ext):
    files = sorted(glob.glob(ext))
    frames = [read_csv(inf, sep='\t', skiprows=1, names=colnames) for inf in files]
    return concat(frames, ignore_index=True)

我没有尝试这段代码,只是在这里写的,也许你需要调整它使它运行,但想法是明确的(我希望)。在

另外,我找到了另一个解决方案,但不知道哪个更快。在

def files2df(colnames, ext):
    dflist = [ ]
    for inf in sorted(glob.glob(ext)):
        dflist.append(read_csv(inf, names = colnames, sep='\t', skiprows=1))
        #print(dflist)                                                                                                                            
    df = concat(dflist, axis = 0, ignore_index=True)
    #print(df.to_string())                                                                                                                        
    return df

相关问题 更多 >