【问题标题】:How to read multiple files and load them into dataframe如何读取多个文件并将它们加载到数据框中
【发布时间】:2018-05-23 08:04:02
【问题描述】:

我在 C:\1 中名为 11 的文件夹中有一个 csv 列表。所有数据的列数相同。

A.csv

aa    zz    1     AA  
aab   qq    3     FF
ca    qq    5     QQ

B.csv

aa    GG    09    VV
aab   HH    03    WW
ca    CC    0     UU

如何将该文件夹中的每个文件读入数据框中,以便在从 csv 读取的每个新数据之间有一个空列。

所以它看起来像:

A     B     C     D     E    F     G     H     I
aa    zz    1     AA         aa    GG    09    VV
aab   qq    3     FF         aab   HH    03    WW
ca    qq    5     QQ         ca    CC    0     UU

即:

dfs = {i: pd.read_csv('C:\\1\\{}.csv'.format(i)) for i in ['a', 'b']}
print (dfs['a'])

或者:

import os
import pandas as pd
filelist = os.listdir(targetdir) 
df_list = [pd.read_table(file) for file in filelist]
big_df = pd.concat(df_list)


    FileNotFoundError: File b'b.csv' does not exist

【问题讨论】:

    标签: python pandas csv path glob


    【解决方案1】:

    您可以在每个读取的文件上添加一个间隔数据框,如下所示:

    import os
    import pandas as pd
    
    # with directory name 1, located at ~/1:
    dir_name = "1"
    path = "~"
    dfs = []
    
    # with files A.csv, B.csv in ~/1 (e.g. ~/1/A.csv):
    for fname in os.listdir(f"{path}/{dir_name}"):
    
        df = pd.read_csv(f"{path}/{dir_name}/{fname}", header=None)
        spacer = pd.DataFrame([" "]*len(df))
        dfs.append(df)
        dfs.append(spacer)
    master = pd.concat(dfs, axis=1)
    
    master
         0   1  2     3  0    0   1  2   3  0
    0   aa  zz  1    AA      aa  GG  9  VV   
    1  aab  qq  3    FF     aab  HH  3  WW   
    2   ca  qq  5    QQ      ca  CC  0  UU   
    

    如果您确实需要您在帖子中指定的按字母顺序排列的列名(ABC),请使用:

    import string
    colnames = string.ascii_uppercase
    master.columns = [x for x in colnames[:len(master.columns)]]
    

    注意:目录路径使用 Mac 语法,但它应该很容易适应 Windows。

    【讨论】:

    • 我似乎得到了 pandas.errors.ParserError: Error tokenizing data。 C 错误:第 4 行中应有 1 个字段,看到 2
    • 这通常发生在您没有为 CSV 正确指定分隔符时,或者当文件中除了实际分隔列的分隔符之外还有其他分隔符时。例如,您在原始帖子中呈现 A.csv 的方式(使用多个空格字符分隔每个字段)将不起作用。 (我以为这只是为了演示,因为你说它们是 CSV,表示逗号分隔。)检查你的分隔符,并确保 read_csv 中的 sep 参数是正确的。
    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多