将数据框的所有行转换成数组,并传递给函数

2024-09-30 01:21:58 发布

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

我想将数据帧的所有行转换为数组,并在函数中使用这些数组。函数应该为每一行创建一个包含函数结果的新列。你知道吗

def harmonicMean(arr):
    sum = 0;
    for item in arr:
        sum = sum + float(1.0/item);
        print "inside" + str(float(1.0/item));
    print sum;
    return float(len(arr) / sum);

该函数实际上为数据帧中的每一行生成调和平均值。这些值应填充到数据框中的新列中。(数据帧还包含Nan值)


Tags: 数据函数inforreturndef数组float
2条回答

您可以使用内置的.iloc.to_list()方法来获取作为数组的行,并将它们传递给您的方法。你知道吗

rows = df.shape[0]
for i in range(rows):
    row_lst = df.iloc[i].to_list()
    print(harmonicMean(row_lst))

您可以在不迭代行的情况下计算:

df['hmean'] = df.notnull().sum(axis=1)/(1/df).sum(axis=1)

   a    b    c     d   e     hmean
0  4  5.0  2.0   5.0  10  4.000000
1  2  8.0  1.0   8.0   6  2.608696
2  7  NaN  1.0   1.0   8  1.763780
3  7  1.0  9.0   4.0   9  3.095823
4  8  5.0  8.0   NaN   3  5.106383
5  3  8.0  6.0  10.0   6  5.607477
6  3  7.0  3.0   9.0   9  4.846154
7  8  NaN  NaN   NaN   6  6.857143
8  2  4.0  1.0   5.0   2  2.040816
9  5  7.0  5.0   3.0   1  2.664975

相关问题 更多 >

    热门问题