我有两个数据帧,如下所示:
数据1如下所示:
id address
1 11123451
2 78947591
数据2如下所示:
lowerbound_address upperbound_address place
78392888 89000000 X
10000000 20000000 Y
我想在data1中创建另一个名为“place”的列,其中包含id来自的位置。 例如,在上述情况下, 对于id 1,我希望place列包含Y,对于id 2,我希望place列包含X。 会有很多来自同一个地方的身份证。有些身份证不匹配。
我试着用下面的代码来做。
places = []
for index, row in data1.iterrows():
for idx, r in data2.iterrows():
if r['lowerbound_address'] <= row['address'] <= r['upperbound_address']:
places.append(r['place'])
这里的地址是浮点值。
运行这段代码要花很长时间。这让我怀疑我的代码是否正确,或者是否有一种更快的方法来执行相同的代码。
任何帮助都将不胜感激。 谢谢您!
您可以首先使用} 连接,然后按^{} 筛选值。最后通过^{} 删除不必要的列:
cross
与^{另一个使用^{} ,最后创建^{} 的解决方案:
使用^{} 的另一个解决方案:
编辑:
计时:
N = 1000
:如果saome值不在范围内,则省略in solution
b
和c
。检查df1
的最后一行。计时代码:
只有带有^{} 的溶液
c
对大型DataFrame
非常有用:N=1M
:关于merge asof in docs的更多信息。
相关问题 更多 >
编程相关推荐