我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。
然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“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().
谢谢你的帮助!
您必须将轴定义为1,因为您希望将函数应用于行,而不是列。
您可以定义一个lambda函数,以便仅对两行应用hilbert,如下所示:
df['hilbert'] = df.apply(lambda row: hilbert(row['col_1'], row['col_2']), axis=1)
由于在apply中有hilbert(df.col_1,df.col_2)
,因此它立即尝试使用完整的pd调用函数。序列
es用于这两列,触发该错误。你应该做的是:
df.apply(lambda x: hilbert(x['col_1'], x['col_2']), axis=1)
因此,给定的lambda函数将应用于每一行。
并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?
我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:
如果之前已经解决了这个问题,请提前道歉,但我已经尝试过浏览所有与ddply、sApplication和Application相关的问题,但我一生都无法解决这个问题... 我已经编写了一个函数CountMonths,它将计费周期中的日、月和总天数作为参数,并返回计费周期中的日历月数: 我想将此函数应用于包含客户账单记录的data.frame中的每一行,例如。 我尝试了几种选择,但没有一种效果好。具体
怎么办? **添加详细示例如下***
问题内容: 在将其标记为重复之前,让我向您解释,我已经阅读了此页面以及许多其他内容,但仍然没有找到解决问题的方法。 这就是我遇到的问题:给定两个2D数组,我想在两个数组上应用函数F。F将两个一维数组作为输入。 请注意,这仅用于演示。这里真正的问题是在两组一维数组上工作的泛型函数F。 向量化要么完全失败,要么出错,或者应用逐个元素的功能,而不是逐个数组(或逐行) 迭代地应用功能;例如,使用上面所定义
我有以下函数(一个以列作为输入的热编码函数)。我基本上想把它应用到我的数据框中的一列,但似乎不明白出了什么问题。 猜我怎么称呼它有问题?