我有两个数据框:一个是我所有的数据(称为“数据”),另一个是每个观测开始和结束的不同测站的纬度和经度(称为“信息”),我试图得到一个数据框,在这个数据框中,我将在每个观测站的旁边显示纬度和经度,我的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万次观察,每次旅行一次)
我希望得到的是,当站数匹配时,得到的数据会是这样的:
当任何人开始处理大型数据集时,这是一个非常反复出现的重要问题。大数据本身就是一个完整的主题,这里简单介绍一下主要概念。你知道吗
<强>1。准备数据集
在大数据中,80%到90%的时间用于收集、过滤和准备数据集。创建数据子集,使其为进一步处理而优化。你知道吗
<强>2。优化脚本
短代码并不总是意味着性能方面的优化代码。在您的情况下,如果不知道您的数据集,很难说您应该如何处理它,您将不得不自己找出如何避免尽可能多的计算,同时获得完全相同的结果。尽量避免任何不必要的计算。你知道吗
如果合适,您还可以考虑将工作拆分为多个线程。你知道吗
一般来说,您不应该使用
for
循环和break
循环。当你不知道要经过多少个循环时,你应该总是使用while
或do...while
循环。你知道吗3岁。考虑使用分布式存储和计算
这是一个主题本身太大了,无法在这里全部解释。你知道吗
以序列化的方式存储、访问和处理数据对于少量数据来说速度更快,但对于大型数据集来说非常不合适。相反,我们使用分布式存储和计算框架。你知道吗
它的目的是并行地做每件事。它依赖于一个名为MapReduce的概念。你知道吗
第一个分布式数据存储框架是Hadoop(例如Hadoop分布式文件系统或HDFS)。此框架有其优点和缺点,具体取决于您的应用程序。你知道吗
在任何情况下,如果您愿意使用此框架,那么您可能更适合不直接在HDFS上使用MR,而是在HDFS上使用更高级别的框架,最好是在内存中,例如Spark或Apache Ignite。另外,根据您的需要,尝试查看框架,例如Hive、Pig或Sqoop。你知道吗
同样,这个主题是一个完全不同的世界,但可能非常适合你的情况。请随意记录所有这些概念和框架,如果需要,请在评论中留下您的问题。你知道吗
这是一个解决方案。还可以使用
pandas.merge
向data
添加2个新列并执行等效映射。你知道吗相关问题 更多 >
编程相关推荐