代码之家  ›  专栏  ›  技术社区  ›  shockwave

Python读取文件并附加到数据帧

  •  0
  • shockwave  · 技术社区  · 5 年前

    我试图读取文件夹中的多个文件。我有大约100个文件。我使用下面的代码读取一个文件并将其附加到一个数据帧中。该指数似乎存在问题。创建数据帧后,将交换列。如:

    文件1以ID、名称、地址和坐标的格式追加

    文件2以名称、坐标、地址和ID的格式追加

    这会导致值出现在错误的列中。

    代码:

    path=r"C:\Notebooks\temp"
    filenames = glob.glob(path+"/*.csv")
    dfs=[]
    
    for file in range(len(filenames)):
        data_read=pd.read_csv(filenames[file], header=0)
        dfs.append(data_read)
        big_frame=pd.concat(dfs)
    

    有没有更好的方法读取CSV文件并附加到数据帧中?

    1 回复  |  直到 4 年前
        1
  •  0
  •   Emanuele Bellucci    5 年前

    尝试删除最后一行,因为它是无用的,并使dfs不是一个列表,而是一个空的数据帧

    dfs = pd.DataFrame(data={'ID' :str(0), 'NAME':str(0), 'ADDRESS':0, 'COORDINATES':str(0)}]
    

    然后像你做的那样将所有其他文件附加到它,最后你可以消除第一个观察,因为它只是一个“初始值设定项”。

    有关列名称的问题,请尝试以下方法:

    column_names = ["ID", "NAME", "ADDRESS", "COORDINATES"]
    
    for file in range(len(filenames)):
        data_read=pd.read_csv(filenames[file], header=0).reindex(columns=column_names)
        dfs.append(data_read)
    

    将这两部分放在一起,就得到了最终的代码:

    path=r"C:\Notebooks\temp"
    filenames = glob.glob(path+"/*.csv")
    dfs = pd.DataFrame(data={'ID' :str(0), 'NAME':str(0), 'ADDRESS':0, 'COORDINATES':str(0)}]
    column_names = ["ID", "NAME", "ADDRESS", "COORDINATES"]
    
        for file in range(len(filenames)):
            data_read=pd.read_csv(filenames[file], header=0).reindex(columns=column_names)
            dfs.append(data_read)
    
    dfs = dfs.iloc[1:,:]