的簡單的解決你的問題是解壓縮從iterrows
來的元組
k = 1
l = 0
for i, row in df.iterrows():
if k % 3 == 0:
result.loc[l, 'H2'] = row['Filename']
l += 1
elif k % 2 == 0:
result.loc[l, 'H1'] = row['Filename']
else:
result.loc[l, 'V'] = row['Filename']
k += 1
對此的改進將使用enumerate
來捕獲k
,而無需自行跟蹤。
l = 0
for k, (i, row) in enumerate(df.iterrows(), 1):
if k % 3 == 0:
result.loc[l, 'H2'] = row['Filename']
l += 1
elif k % 2 == 0:
result.loc[l, 'H1'] = row['Filename']
else:
result.loc[l, 'V'] = row['Filename']
不過,我不太清楚你在做什麼。如果碰巧你試圖捕獲從第一,第二和第三項開始的每個第三元素,那麼你沒有完成這個。如果您確信這一邏輯,則忽略以下建議。
pd.concat([df.Filename.iloc[0::3].reset_index(drop=True),
df.Filename.iloc[1::3].reset_index(drop=True),
df.Filename.iloc[2::3].reset_index(drop=True)],
axis=1, keys=['V', 'H1', 'H2'])
或者
df.Filename.groupby(np.arange(df.shape[0]) % 3) \
.apply(pd.Series.reset_index, drop=True) \
.unstack(0).rename(columns={0: 'V', 1: 'H1', 2: 'H2'})