zip
работает только до самой короткой итерации.Если одна из итераций пуста, вы не сможете итерировать никакие значения.
itertools.zip_longest
итерирует до самой длинной итерации, но для того, чтобы это работало с распаковкой, вам нужно указать fillvalue
какtuple
длины 2:
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
Но очень мало случаев, когда вам нужно будет повторять строки, подобные этой.На самом деле, этого следует избегать, если это вообще возможно.Вы должны рассмотреть возможность рефакторинга вашей логики для использования векторизованной функциональности.