Skip to main content
 首页 » 编程设计

python之在列表上迭代函数,并附加返回值

2025年05月04日13mq0036

我有一个 CSV 数据集,40 列乘以 800 多行。 但作为一个例子,假设它看起来像这样:

Ref  X  Y 
11   1  10  
11   2  9 
11   3  8 
11   4  7 
12   5  6  
12   6  5 
12   7  4 
13   8  3 
13   9  2 

您将如何定义一个函数来返回每个 Ref 的平均 X 和 Y 值列表?即产生类似的东西:

Ref_list = [11,12,13]         
Av_X = [2.5,6,12.5] 

我怀疑这是处理它的最佳方式,但我已经编写了以下代码:

my_data = genfromtxt('somedata.csv', delimiter=',',skiprows=1)  
 
X=[] 
for i in my_data: 
    X.append(i[0]) 
    counter=collections.Counter(X) 
    keys=np.sort((counter.keys())) #find and sort ref key values 
 
def getdata(): 
    X , Y = [], [] 
    for i in my_data: 
       if i[0] == refs: 
           X.append(i[1]) 
           Y.append(i[2]) 
    AV_X=np.average(X) 
    AV_Y=np.average(X) 
    return AV_X, AV_Y 
 
for refs in keys: # run function over key range  
    AV_X, AV_Y = getdata() 

这里我卡住了,我试图在 ref no 的范围内迭代函数。 (键)并附加返回的值。但除了错误,我只能得到最后一个 Ref 的值。在键中。

我想有更好的方法可以做到这一点,但我仍然是这方面的新手。 非常感谢任何建议

请您参考如下方法:

你可以使用辉煌pandas这类工作的图书馆:

from StringIO import StringIO 
import pandas as pd 
 
df = pd.read_csv(StringIO('your_data'), 
        delim_whitespace=True) 
 
df.groupby('Ref').mean() 
 
       X    Y 
Ref           
11   2.5  8.5 
12   6.0  5.0 
13   8.5  2.5 

正如您在最后一行中看到的,您在问题中计算错误...

您同样可以要求 median, sum, max, etc..