[英]Computation between two large columns in a Pandas Dataframe
我有一个 dataframe,它有 2 列邮政编码,我想添加另一列及其距离值,我可以用相当少的行数来做到这一点,但我现在正在使用一个 dataframe,它有大约 500,000 行用于计算。 我的代码有效,但在我当前的 dataframe 上运行了大约 30 分钟,但仍然没有完成,所以我觉得我正在做的事情非常低效。
这是代码
import pgeocode
dist = pgeocode.GeoDistance('us')
def distance_pairing(start,end):
return dist.query_postal_code(start, end)
zips['distance'] = zips.apply(lambda x: distance_pairing(x['zipstart'], x['zipend']), axis=1)
zips
我知道循环是不可能的,所以我还能做些什么,提高效率,使它变得更好?
尽可能在 pandas 和 numpy 中使用向量化运算。在这种情况下:
zips['distance'] = dist.query_postal_code(
zips['zipstart'].values,
zips['zipend'].values,
)
这并不总是有效,但在这种情况下,底层pgeocode.haversine
function 被写入(在 numpy 中)以容纳 arrays 的 x 和 y 坐标。 对于这种大小的 dataframe,这会将您的代码加速几个数量级。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.