【问题标题】:Process each CSV files in a folder处理文件夹中的每个 CSV 文件
【发布时间】:2015-02-17 23:53:27
【问题描述】:

我正在尝试从特定文件夹导入一堆 CSV 文件并分别处理每个 CSV 文件(并为每个处理的 CSV 文件打印结果)。

下面的代码读取感兴趣的 CSV 文件,但是当我实际尝试处理数据时(代码的最后两行),我只收到一个结果,它对应于代码读取的最后一个文件。我想,问题在于,代码可能会计算每个 CSV 文件的输出,但是,它会覆盖实际结果。

import os, glob

import pandas as pd

path = "J:\Tre\Data\CSVS"

for files in glob.glob("*_monday_*.csv"):

   dataframe = pd.read_csv(files, sep=",")

dataframe.columns = ["IDS", "Alfa", "Beta", "Gamma"]

Alfa = dataframe['Alfa']

Beta = dataframe['Beta']

Gamma= dataframe['Gamma']

AlfaAlfa = Beta-Gamma

sum(Alfa[AlfaAlfa==0])/Alfa.sum()

【问题讨论】:

  • 你每次都覆盖你的变量dataframe,你最终想要什么?一个dfs列表,一个dict?一个面板,或者你想要所有的 csv 连接成一个 df?
  • 嗨 EdChum,我想为打印在一个文档中的每个 CSV 文件获取一个值(参见代码中的最后一行)
  • 在这种情况下,您是否应该不缩进您的计算代码,以便在您的 for 循环中执行以实现您想要的效果?
  • 实际上,在代码中,只有 dataframe = pd.read.....line 是缩进的,但我仍然只打印最后一个计算
  • 对不起,你明白我的最后评论了吗?您的计算代码超出了您的 csv 读取代码的范围,它只会在您的循环完成时执行,因此只有一个计算,如果您想为每个 csv 文件计算,您可以将您的计算代码移动到您的循环内或创建一个列表dfs 并遍历这些 dfs 并执行计算

标签: python pandas


【解决方案1】:

您必须为每个文件创建一个单独的数据框,然后加入或合并所有数据框。 更多信息http://pandas.pydata.org/pandas-docs/stable/merging.html

关于您的错误: 发生这种情况是因为您为每个文件一遍又一遍地编辑相同的变量。因此,覆盖。

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多