Python:将循环内的所有实例保存到变量以供稍后调用

Python: Saving all instances from inside a loop to variable to call later

我正在处理 Pandas 和一个 CSV 文件,我正在遍历该文件以查找每次出现的特定颜色,然后返回图像的名称。 例如,我有一个数据框:

    imageName   color1   color2   color3   color4  
    1           Blue     Blue     Blue     Blue 
    2           Pink     Magenta  Red      Purple
    3           Blue     Blue     Blue     Blue
    4           Blue     Yellow   Teal     Teal
    5           Yellow   Blue     Red      Purple
    ...

我正在做的是在每次提到特定颜色时打印图像名称。

   for index, row in df.iterrows():
      if (row['color1'] == 'Blue' and row['color2'] == 'Blue' and row['color3'] == 'Blue' and row['color4'] == 'Blue'):
         allBlue = (row['imageName'])

这得到了我想要的结果,但如果我从另一个文件调用我的变量 allBlue,它只是 returns 最后一个实例,因为它不在 for 循环中。有没有办法将整个打印输出保存到一个变量,以便稍后从不同的文件调用?

像这样:当我从内部循环调用它时

Occurrences of all Blue Shapes:
1
3
6
19
...
178

而不是这个:当我从其他文件调用它时

Occurrences of all Blue Shapes:
178

我很确定我只是忘记了一些明显的事情或没有想清楚一些事情,但我们将不胜感激任何帮助。

您不需要循环来查找 pandas 中的带颜色的图像。但是,我放入了一个在正确位置使用累加器列表的循环作为示例 (colorcols):

import pandas as pd

cdf = pd.DataFrame({'color1': {0: 'Red', 1: 'Blue', 2: 'Yellow', 3: 'Blue'},
 'color2': {0: 'Red', 1: 'Green', 2: 'Blue', 3: 'Blue'},
 'color3': {0: 'Red', 1: 'Red', 2: 'Red', 3: 'Blue'},
 'color4': {0: 'Red', 1: 'Blue', 2: 'White', 3: 'Blue'},
 'form': {0: 'circle', 1: 'circle', 2: ' square', 3: 'circle'},
 'imageName': {0: 'img1', 1: 'img2', 2: 'img3', 3: 'img4'}})

colorcols = []
for i in range(1,5):
    colorcols.append('color%d'%i)

for color in set(cdf[colorcols].values.flatten()):
    mask = (cdf==color)
    print('%s: '%color),
    colors = (mask.sum(axis=1) > 0)

    print(cdf[colors].imageName.values)
Blue:  ['img2' 'img3' 'img4']
White:  ['img3']
Green:  ['img2']
Yellow:  ['img3']
Red:  ['img1' 'img2' 'img3']