繁体   English   中英

Pandas Dataframe 中两个大列之间的计算

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM