如何找到多个csv中每个单元格的平均值

2024-10-01 05:04:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个excel文件,其中的数据格式与此类似

csv1             csv1
  a b c           a b c
x 1 2 3         x 3 2 1
y 4 5 6         y 6 5 4

总共有3个csv,我需要用每个单元格的平均值创建一个新的csv。 因此csv3将如下

  a       b        c
x (3+1)/2) (2+2)/2  (3+1)/2
y (6+4)/2  etc.

到目前为止,我已经导入了文件,但我不确定如何继续

import pandas as pd

def Averager(fileA,fileB,fileC):
    csvA=pd.read_csv(fileA)
    csvB=pd.read_csv(fileB)
    csvC=pd.read_csv(fileC)
    g=pd.concat([csvA, csvB, csvC]).groupby(level=0).mean()
    print(g)                                                   
print(Averager('a.csv','b.csv','c.csv'))

Tags: 文件csvreadexcelpdprint数据格式averager
3条回答

你已经很接近了,这里有一个解决方案应该是可行的。我使用pathlib创建文件名,使用起来非常简单

import pandas as pd
from pathlib import Path

p = Path(r"path/to/file")

data = {}
for i in range(1,4):
    f = p / f"csv{i}.csv"
    data[i]=pd.read_csv(f)

df = pd.concat(data)
avg=df.groupby(level=1).mean()

print(df)
print(avg)

既然您标记了numpy,我假设numpy解决方案可以工作

import numpy as np
csv1 = np.genfromtxt('my_file1.csv', delimiter=',')
csv2 = np.genfromtxt('my_file2.csv', delimiter=',')
np.savetxt("foo.csv", (csv1+csv2)/2, delimiter=",")    

将CSV数据读入数据帧后,一种超级简单的方法是:

 df1.add(df2)/2

或者,在这种特定情况下:

(csvA+csvB+csvC)/3

如果所有数据帧的形状(和数字)都与原始示例中所示相同,那么这是可行的

相关问题 更多 >