gpt4 book ai didi

Python 列表理解与数据框循环

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:04 25 4
gpt4 key购买 nike

我正在寻找一些我无法完全找到答案的非常具体的东西。

我有两个数据框。包含 ID、纬度和经度的一个。另一个只有一个 ID。

我想使用列表理解将纬度和经度存储在列表中,只要数据框 A 中的 ID 存在于数据框 B 中即可。我可以让第一部分正常工作,但匹配 ID 似乎会导致问题。这是我目前所拥有的:

heat_data = [[row['latitude'],row['longitude']] for index, row in extract.iterrows() if row['NBN Location Id'] in closed['SP Order Location ID']]

对我来说,只要 ID 存在于另一个数据框中(已关闭),就可以从提取物中存储“纬度”和“经度”。然而,这导致没有数据被检索。谁能指导我哪里出错了?如果我排除最后一个“if”语句,它就可以正常工作。那么我还应该如何执行此 if 语句?

谢谢!

最佳答案

我认为列表理解不是必需的,更好更快的是通过过滤器使用向量化解决方案 boolean indexingisin然后转换为列表:

mask = extract['NBN Location Id'].isin(closed['SP Order Location ID'])
cheat_data = extract.loc[mask, ['latitude', 'longitude']].values.tolist()

示例:

closed = pd.DataFrame({'SP Order Location ID':list('ace')})
print (closed)
SP Order Location ID
0 a
1 c
2 e

extract = pd.DataFrame({'NBN Location Id':list('abcde'),
'latitude':['lat1','lat2','lat3','lat4','lat4'],
'longitude':['long1','long2','long3','long4','long4']})

print (extract)
NBN Location Id latitude longitude
0 a lat1 long1
1 b lat2 long2
2 c lat3 long3
3 d lat4 long4
4 e lat4 long4

mask = extract['NBN Location Id'].isin(closed['SP Order Location ID'])
cheat_data = extract.loc[mask, ['latitude', 'longitude']].values.tolist()
print (cheat_data)
[['lat1', 'long1'], ['lat3', 'long3'], ['lat4', 'long4']]

你的解决方案失败了,因为在pandas check index values ,不是 Series 的值,因此需要转换为列表:

cheat_data = [[row['latitude'],row['longitude']] for index, row in extract.iterrows() 
if row['NBN Location Id'] in closed['SP Order Location ID'].tolist()]
print (cheat_data)
[['lat1', 'long1'], ['lat3', 'long3'], ['lat4', 'long4']]

#changed index values
closed = pd.DataFrame({'SP Order Location ID':list('ace')}, index=list('dbw'))
print (closed)
SP Order Location ID
d a
b c
w e

cheat_data = [[row['latitude'],row['longitude']] for index, row in extract.iterrows()
if row['NBN Location Id'] in closed['SP Order Location ID']]
print (cheat_data)

[['lat2', 'long2'], ['lat4', 'long4']]

关于Python 列表理解与数据框循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437024/

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