假设以下情况:我有一个包含3个键的字典。每个键都是一个具有5行的pd数据帧。
我目前正在使用迭代整个字典
for key in dict1:
for i in range(len(dict1[key])):
do_something
所以这个迭代的工作方式是:
迭代第1行-密钥1
迭代第2行-键1
迭代第3行-键1
迭代第4行-键1
迭代第5行-键1
迭代第1行-键2
迭代第2行-键2等…
但是,我想做的是:
迭代第1行-密钥1
迭代第1行-键2
迭代第1行-键3
迭代第2行-键1
迭代第2行-键2等…
有没有一种聪明的方法可以更改for循环的迭代顺序?
它不需要智能方式。您必须使用for
-按不同顺序循环-第一个range
,下一个keys
。仅此而已。
for i in range(len(dict1['key1'])):
for key in dict1:
print(dict1[key].iloc[i,0])
最小工作代码
import pandas as pd
dict1 = {
'key1': pd.DataFrame([f'row{i} key1' for i in range(1, 6)]),
'key2': pd.DataFrame([f'row{i} key2' for i in range(1, 6)]),
'key3': pd.DataFrame([f'row{i} key3' for i in range(1, 6)]),
}
for i in range(len(dict1['key1'])):
for key in dict1:
print(dict1[key].iloc[i,0])
结果:
row1 key1
row1 key2
row1 key3
row2 key1
row2 key2
row2 key3
row3 key1
row3 key2
row3 key3
row4 key1
row4 key2
row4 key3
row5 key1
row5 key2
row5 key3