gpt4 book ai didi

python - 将函数行明智地应用于 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-04 11:55:30 25 4
gpt4 key购买 nike

我必须从二维坐标计算希尔伯特曲线上的距离。使用 hilbertcurve 包,我构建了自己的“hilbert”函数,以实现此目的。坐标存储在数据帧(col_1 和 col_2)中。如您所见,我的函数在应用于两个值(测试)时有效。

但是,当通过应用函数按行应用时,它不起作用!为什么是这样?我在这里做错了什么?我需要一个额外的列“希尔伯特”,其中包含与列“col_1”和“col_2”中给出的 x 和 y 坐标的希尔伯特距离。

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().

感谢您的帮助!

最佳答案

既然你有 hilbert(df.col_1, df.col_2)在应用中,它会立即尝试使用完整的 pd.Series 调用您的函数。 es 用于这两列,触发该错误。你应该做的是:

df.apply(lambda x: hilbert(x['col_1'], x['col_2']), axis=1)

这样给定的 lambda 函数将应用于每一行。

关于python - 将函数行明智地应用于 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61942138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com