如何从多个csv文件中获取每X行的列的平均值

问题描述 投票:0回答:1

几天来我一直在解决这个问题:

  • 我在csv文件中有几个数据框,它们的格式都相同(列名,行名),我想计算每个文件的每一行的平均值,然后将其保存在输出的csv文件中。像这样工作:
import glob

import csv

with open('result.csv', 'w', newline='') as f_output:

    csv_output = csv.writer(f_output)

    for filename in glob.glob('F*.csv'):
        print (filename)
        with open (filename, newline='') as f_input:

            csv_input = csv.reader(f_input)
            header = next(csv_input)
            averages = [] #making a list for averages 

            for col in zip(*csv_input):
                averages.append(sum(float(x) for (x) in col) / len(col))


        csv_output.writerow([filename] + averages)
  • 但是我实际上需要每18行(因为每行= 1分钟)每一个数据帧的每个列的均值(不包括标题)(因为这是一个字符串)。所以我一直在尝试只选择前18行,并且在for循环中使用这样的内容
df = pd.read_csv(df,skiprows=0, nrows = 18) #to get only first 18 minutes'

但这是1)不起作用(我认为这不适用于读者)2)不是理想的,因为我实际上只想将所有dfs分成18行的块,然后计算每行的平均值。

任何提示都会非常有帮助,谢谢!

python pandas csv dataframe mean
1个回答
0
投票

而不是使用for循环,我建议加载整个数据帧并使用groupby

© www.soinside.com 2019 - 2024. All rights reserved.