我有一个庞大的数据框,我想使用几个列来应用自定义函数,并将结果放在一个新列中。但我遇到了一个问题。 以下是我计算两行之间距离的函数。
def calcDist(p, q):
diff = p - q
square_diff = diff ** 2
sum_square_diff = square_diff.sum()
return sum_square_diff ** 0.5
函数中的一个参数是常量(0和1的系列),函数的第二个参数是数据框中所选列中的数据(类似于0和1的系列)。 我试过以下代码。
cols = ['a','b','c']
new = [0,1,1]
df.columns = ['aa','a','b','c','dd','ee']
df['dist'] = df.loc[:,cols].apply(lamda x: calcdist(x, new))
但是我在“#dist;'柱。 我已经尝试过循环来解决这个问题。但它很慢。
house_chosen['dist'] = 0
for i in range(len(house_chosen)):
cols_chosen = house_chosen.loc[:, addition_list]
series_chosen = cols_chosen.iloc[i, :]
house_chosen.iloc[i, 42] = calcDist(new_house_addition, series_chosen)
有没有办法用apply函数解决问题? THX