python - 带有循环数据框的 Python 列表理解
问题描述
我正在寻找一些我无法找到答案的非常具体的东西。
我有两个数据框。包含 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 indexing
,isin
然后转换为列表:
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检查索引值,而不是值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']]
推荐阅读
- java - java swing中如何设置在线考试的时间限制?
- python - AWS 用户迁移 Lambda 为首次登录返回“不正确的用户名或密码”
- tensorflow - 将 Jupyter 笔记本部署为 AI Platform 管道中的组件
- python - Pyenv 在升级到 Big Sur 后崩溃了
- go - 如何在 SQLX 中执行条件操作
- perforce - 找出由不同 perforce 客户端(不同用户)同步的工作区的客户端工作区规范
- android - 错误:找不到符号 @dagger.hilt.InstallIn(value = {ApplicationComponent.class})
- android-studio - 我在 android studio 中运行颤振有问题
- python - 为 Play 商店签署 kivy 应用程序时出错
- c++ - 如何创建适当的子结构实例向量?