0

我正在使用循环打开连续文件,然后使用第二个循环来计算特定行 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)

谢谢!

4

1 回答 1

0

你的主要问题是缩进和你没有保存df到字典或列表的事实。

此外,您首先打开文件,然后将其传递给 pandas,因为 pandasI/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. 
于 2021-03-25T17:12:57.820 回答