【发布时间】: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 并执行计算