Python 将数据帧的所有行转换为数组并传递给函数
我想将数据帧的所有行转换为数组,并在函数中使用这些数组。函数应该为每一行创建一个包含函数结果的新列Python 将数据帧的所有行转换为数组并传递给函数,python,pandas,dataframe,Python,Pandas,Dataframe,我想将数据帧的所有行转换为数组,并在函数中使用这些数组。函数应该为每一行创建一个包含函数结果的新列 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); 该函数实际上为数据
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
值)您可以使用内置的.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
你能提供更多的信息吗?作为数据样本(可以是
df.head()
),您尝试了什么以及希望输出什么。df.values将给出numpy ndarray。。这可以是一排排。。这样更快…@nickthefreak谢谢!成功了。但是我得到了这个错误:ZeroDivisionError:('float division by zero','occurrent at index 0'),因为行也包含零。知道在计算调和平均值时如何忽略零和Nan值吗?我不知道零除误差是在按项除时还是在按和除时;可能发生在任何一个部门。在Dividigi尝试之前,您可能需要添加一个if语句来检查项和总和是否大于0,我得到的错误是:row_lst=data1.iloc[i]。在getattr返回对象的第4376行中,将其添加到_list()文件“C:\Users\Pinky\AppData\Local\Programs\Python37-32\lib\site packages\pandages\core\generic.py”__(自我、姓名)AttributeError:“Series”对象没有“to_list”属性您好!谢谢您的回答,我得到了一个我不理解的错误。它说:无法使用块值浮点除零操作1。您知道这意味着什么吗?@JagruthiC我不太确定。这可能是一个除以0的问题,尽管我无法复制这个问题,因为这似乎是我自己的问题s处理所有NaN行和我端的0/NaN或#/0。