我一直在尝试迭代两次 熊猫数据帧 拉链 . 在两个数据帧中都有可用的值之前,它可以完美地工作。如果其中一个数据帧为空,则不会迭代并返回null。
for (kin_index, kin_row), (sub_index, sub_row) in zip(df1.iterrows(), df2.iterrows()): print(kin_index,sub_index)
如果其中一个数据帧为空,则不会执行此操作。
zip 只跑最短的距离。如果其中一个iterables为空,则无法迭代任何值。
zip
itertools.zip_longest fillvalue 作为一个 tuple
itertools.zip_longest
fillvalue
tuple
from itertools import zip_longest df1 = pd.DataFrame([[0, 1], [2, 3]]) df2 = pd.DataFrame() zipper = zip_longest(df1.iterrows(), df2.iterrows(), fillvalue=(None, None)) for (idx1, row1), (idx2, row2) in zipper: print(idx1, idx2) 0 None 1 None
但是很少有情况需要这样迭代行。事实上,如果可能的话,应该尽量避免。您应该考虑重构您的逻辑以使用矢量化功能。