python - 慢循环python在python的antoher数据框中搜索数据
问题描述
我有两个数据框:一个包含我的所有数据(称为“数据”),一个包含每个观测开始和结束的不同站点的纬度和经度(称为“信息”),我试图在我的位置获得一个数据框在每个观察中,每个站点旁边都会有纬度和经度,我在 python 中的代码:
for i in range(0,15557580):
for j in range(0,542):
if data.year[i] == '2018' and data.station[i]==info.station[j]:
data.latitude[i] = info.latitude[j]
data.longitude[i] = info.longitude[j]
break
但是由于我有大约 1500 万次观察,所以这样做需要很多时间,有没有更快的方法呢?
非常感谢(我还是新手)
编辑 :
我的文件信息是这样的(大约 500 个观察,每个站一个)
我的文件数据是这样的(这里没有显示其他变量)(大约 1500 万次观察,每次旅行一个)
我希望得到的是,当站号匹配时,结果数据将如下所示:
解决方案
这是一种解决方案。您还可以使用pandas.merge
添加 2 个新列data
并执行等效映射。
# create series mappings from info
s_lat = info.set_index('station')['latitude']
s_lon = info.set_index('station')['latitude']
# calculate Boolean mask on year
mask = data['year'] == '2018'
# apply mappings, if no map found use fillna to retrieve original data
data.loc[mask, 'latitude'] = data.loc[mask, 'station'].map(s_lat)\
.fillna(data.loc[mask, 'latitude'])
data.loc[mask, 'longitude'] = data.loc[mask, 'station'].map(s_lon)\
.fillna(data.loc[mask, 'longitude'])
推荐阅读
- nuxt.js - 如果路由不以 index 开头,则防止 nuxt 从 index 开始
- swift - 我可以查询并查看 Firestore 的两个不同字段中是否存在一个值吗?
- python - pandas_datareader 的非弃用版本是什么?
- regex - 正则表达式从文件中提取单词
- keras - 使用 Tensorflow 后端在 Keras 中实现双编码器 LSTM
- node.js - 如何使用连接在我的节点服务器上启用 gzip?
- python - 如何从文件中读取浮点数并在 Python 中显示平均值
- laravel - 动态搜索功能相册
- javascript - While循环隐藏div元素
- python - 用python合计相应列的总和