【发布时间】:2019-05-17 00:05:52
【问题描述】:
我是个初学者,我做了一个基本的嵌套 for 循环来修改现有的每小时数据系列 (A)。该系列由 pandas 制成,具有日期时间索引和值。
我的代码基本上比较了两个系列(A和B)的年月日索引,如果它们在某些行相同,则更改系列(A)的值并修改系列。
它适用于短数据,但效率很差。 当我运行 10,000 个计数数据时,循环永远不会结束。 A 系列约 10,000 个计数,B 系列约 1,000 个计数。
我已经搜索了几天关于简化嵌套循环的类似问题,但是我无法处理如何处理索引比较部分,另外我希望修改后的A系列的对象类型和索引保持不变。即使是一个小提示也会对我很有帮助。
for i in range(0,len(A)):
for j in range(0,len(B)):
if A.index.year[i] == B.index.year[j] and A.index.month[i] == B.index.month[j] and A.index.day[i] == B.index.day[j]:
A.values[i] = B.values[j]
break
else:
pass
【问题讨论】:
-
这是你想要做的:C = A.reindex(B.index).dropna(axis=0); A.update(B.reindex(C.index)) 注意:就地更新工作
-
谢谢你,拉明!你能解释一下你的想法吗?
-
这个想法是获取 A 的行,其索引值也在 B 中,然后用 B 的行在索引中具有这些值的行更新 A
标签: python pandas nested-loops simplify