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']
我正在处理 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']