【问题标题】:Problem to read .dat files in Panda in a loop from Folder从文件夹循环读取 Panda 中的 .dat 文件的问题
【发布时间】:2021-04-09 02:53:18
【问题描述】:

我有一个奇怪的问题。在我的文件夹中,我有来自实验室 CO2 传感器的带有 CO2 值的 .dat 数据。来自实验 4、5、6、7、8 的数据,名称为 CO2_4.dat、CO2_5.dat、CO2_6.dat、CO2_7.dat、CO2_8.dat 我知道如何手动阅读它们。例如,读取 CO2_4 可以:

dfCO2_4_manual = pd.read_csv(r'C:\data\CO2\co2_4.dat', sep=";", encoding= 'unicode_escape', header = 0, skiprows=[0], usecols=[0,1,2,4], names =["ts","t","co2_4", "p"])
display(dfCO2_4_manual)

这给了我一个具有正确值的数据框:

每分钟一个值

但是,如果我想遍历我的文件夹并使用这种技术(“适用于实验室的其他 CSV 文件”)读取它们,该技术可以保护字典中的数据帧:

exp_list =[4,5,6,7,8]                                           # list with number of each experiment

path_CO2 = r'C:\data\CO2'             
CO2_files = glob.glob(os.path.join(path_CO2, "*.dat"))           
CO2_dict = {}

for f, i in zip(offline_files, exp_list):                         
    CO2_dict["CO2_{0}".format(i)] = pd.read_csv(f, sep=";", encoding= 'unicode_escape', header = 0, skiprows=[0], usecols=[0,1,2,4], names =["ts","t","CO2_{0}".format(i), "p"])
display(CO2_dict["CO2_4"])

给了我一个包含许多被跳过且完全错误的值的数据框。

如果我用文本编辑器打开 CO2_4.dat 数据,它看起来像这样:

有人知道发生了什么吗?

【问题讨论】:

    标签: python pandas csv dictionary for-loop


    【解决方案1】:

    鉴于我们无权访问您的文件,目前尚不清楚如何提供帮助,但是,这一行是否

    for f, i in zip(offline_files, exp_list): 
    

    正确吗? offline_files 在哪里定义?它不在您提供的代码中。另外,你想分别分析每个 df 吗?这就是你将它们存储在字典中的原因吗?

    作为替代方案,您可以将每个 df 存储在一个列表中并将它们连接起来。然后,您可以通过这种方式对它们进行分组和应用分析。

    df_hold_list = []
    for f, i in zip(CO2_files, exp_list): #changed file list name; please verify          
        df = pd.read_csv(f, sep=";", encoding= 'unicode_escape', header = 0, skiprows=[0], usecols=[0,1,2,4], names =["ts","t","CO2_{0}".format(i), "p"])
        df['file'] = 'CO2_{0}'.format(i) # add column for sorting/grouping
    df_hold_list.append(df)
    
    df_new = pd.concat(df_hold_list, axis=0) # check the axis, should be 0 or 1
    

    我无法测试代码,但应该可以。如果没有,请告诉我。

    【讨论】:

    • 是的,我很盲目,非常感谢......我忽略了很长时间......嗯,这对平台来说是一个糟糕的问题,但它至少帮助了我。谢谢你,也对列表提出很好的建议:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多