为什么循环仅保存 pandas 中最后一个文件的结果

why loop saves only results from last file in pandas

我正在使用一个循环来打开连续的文件,然后使用第二个循环来计算特定行 nrs (x) 处的 y 平均值。为什么第二个循环只显示最后一个文件的平均值?我想将每个文件的平均值附加到一个新的数据框中。

path = '...../'

for file in os.listdir(path):
    if file.endswith('.txt'):
       with open(os.path.join(path, file)) as f:
        df = pd.read_csv(f, sep="\t", header=0,usecols=[0,11])
        df.columns = ["x", "y"]

average_PAR=[]
list=[]

for (x, y) in df.iteritems():
   average_PAR = sum(y.iloc[49:350]) / len(y.iloc[49:350])
   list.append(average_PAR)
print(list)

谢谢!

您的主要问题是缩进以及您没有将 df 保存到字典或列表中这一事实。

此外,您首先打开文件,然后将其传递给 pandas,没有必要这样做,因为 pandas 会为您处理 I/O

您的代码的简化版本是。

from pathlib import Path
import pandas as pd 


dfs = {f.stem : pd.read_csv(f, sep="\t", header=0,usecols=[0,11]) 
                 for f in Path('.../').glob('*.txt')}


for each_csv, dataframe in dfs.items():
    dataframe.iloc[35:450] # do stuff.