我必须计算出从二维坐标到希尔伯特曲线的距离。用希尔伯特曲线包,我建立了自己的“希尔伯特”-function,以做到这一点。坐标存储在一个数据(col_1和col_2)中。正如您所看到的,当应用于两个值(test)时,我的函数可以工作。
然而,它只是不工作时,应用行通过应用-功能!为什么会这样呢?我在这里做错什么了?我需要一个额外的列“希尔伯特”与希尔伯特距离给出的x和y坐标列"col_1“和"col_2”。
import pandas as pd
from hilbertcurve.hilbertcurve import HilbertCurve
df = pd.DataFrame({'ID': ['1', '2', '3'],
'col_1': [0, 2, 3],
'col_2': [1, 4, 5]})
def hilbert(x, y):
n = 2
p = 7
hilcur = HilbertCurve(p, n)
dist = hilcur.distance_from_coordinates([x, y])
return dist
test = hilbert(df.col_1[2], df.col_2[2])
df["hilbert"] = df.apply(hilbert(df.col_1, df.col_2), axis=0)最后一个命令以错误结尾:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().谢谢你的帮助!
发布于 2020-05-21 19:33:51
由于应用程序中有hilbert(df.col_1, df.col_2),因此立即尝试使用这两列的完整pd.Serieses调用函数,从而触发该错误。你应该做的是:
df.apply(lambda x: hilbert(x['col_1'], x['col_2']), axis=1)以便将给定的lambda函数应用于每一行。
发布于 2020-05-21 19:37:33
您必须将您的轴定义为1,因为您希望将函数应用于行,而不是列。
您可以定义一个lambda函数,以便只对以下两行应用hilbert:
df['hilbert'] = df.apply(lambda row: hilbert(row['col_1'], row['col_2']), axis=1)https://stackoverflow.com/questions/61942138
复制相似问题