我有以下字典:
the_dictionary_list = {'Fondo': ['Oceano.png'],
'Cuerpo': ['Cuerpo_cangrejo.png'],
'Ojos': ['Antenas.png', 'Pico.png', 'Verticales.png'],
'Color': ['Amarillo.png', 'Blanco.png', 'Rojirosado.png', 'Turquesa.png', 'Verde_oscuro.png', 'Zapote.png'],
'Pinzas': ['None', 'Pinzitas.png', 'Pinzotas.png', 'Pinzota_pinzita.png'],
'Puas': ['None', 'Arena.png', 'Marron.png', 'Purpura.png', 'Verde.png']}
为了获得每个可能的排列而不以特定顺序重复(即笛卡尔积),我使用以下代码:
import itertools as it
AllKeysNames = ['Fondo', 'Cuerpo', 'Ojos', 'Color', 'Pinzas', 'Puas']
Combinations = list(it.product(*(the_dictionary_list[Name] for Name in AllKeysNames)))
print(f'{Combinations}')
我怎样才能让上面的程序将每次迭代保存到一个资料帧中,例如它会抛出这样的输出:
Index | Permutations | FilePermutations
0 |Fondo Cuerpo Ojos Color Pinzas Puas|Oceano.png Cuerpo_cangrejo.png Antenas.png Amarillo.png None None
1 |Fondo Cuerpo Ojos Color Pinzas Puas|Oceano.png Cuerpo_cangrejo.png Antenas.png Amarillo.png None Arena.png
2 |Fondo Cuerpo Ojos Color Pinzas Puas|Oceano.png Cuerpo_cangrejo.png Antenas.png Amarillo.png None Marron.png
.
.
.
Permutations
列中的信息将保持不变,资料帧的索引长度为359
uj5u.com热心网友回复:
添加join
forit.product
然后加入 forPermutations
列:
AllKeysNames = ['Fondo', 'Cuerpo', 'Ojos', 'Color', 'Pinzas', 'Puas']
new = [' '.join(x) for x in
it.product(*(the_dictionary_list[Name] for Name in AllKeysNames))]
df = pd.DataFrame({'Permutations':" ".join(AllKeysNames), 'FilePermutations':new})
print (df)
Permutations \
0 Fondo Cuerpo Ojos Color Pinzas Puas
1 Fondo Cuerpo Ojos Color Pinzas Puas
2 Fondo Cuerpo Ojos Color Pinzas Puas
3 Fondo Cuerpo Ojos Color Pinzas Puas
4 Fondo Cuerpo Ojos Color Pinzas Puas
.. ...
355 Fondo Cuerpo Ojos Color Pinzas Puas
356 Fondo Cuerpo Ojos Color Pinzas Puas
357 Fondo Cuerpo Ojos Color Pinzas Puas
358 Fondo Cuerpo Ojos Color Pinzas Puas
359 Fondo Cuerpo Ojos Color Pinzas Puas
FilePermutations
0 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
1 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
2 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
3 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
4 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
.. ...
355 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
356 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
357 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
358 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
359 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
[360 rows x 2 columns]
uj5u.com热心网友回复:
IIUC,一种使用方式pandas.Series.str.cat
:
df = pd.DataFrame(list(product(*the_dictionary_list.values())))
df = df.loc[:, 0].str.cat(df.loc[:, 1:], sep=" ").to_frame(name="FilePermutations")
df["Permutations"] = " ".join(the_dictionary_list)
print(df)
输出:
FilePermutations \
0 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
1 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
2 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
3 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
4 Oceano.png Cuerpo_cangrejo.png Antenas.png Ama...
.. ...
355 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
356 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
357 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
358 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
359 Oceano.png Cuerpo_cangrejo.png Verticales.png ...
Permutations
0 Fondo Cuerpo Ojos Color Pinzas Puas
1 Fondo Cuerpo Ojos Color Pinzas Puas
2 Fondo Cuerpo Ojos Color Pinzas Puas
3 Fondo Cuerpo Ojos Color Pinzas Puas
4 Fondo Cuerpo Ojos Color Pinzas Puas
.. ...
355 Fondo Cuerpo Ojos Color Pinzas Puas
356 Fondo Cuerpo Ojos Color Pinzas Puas
357 Fondo Cuerpo Ojos Color Pinzas Puas
358 Fondo Cuerpo Ojos Color Pinzas Puas
359 Fondo Cuerpo Ojos Color Pinzas Puas
[360 rows x 2 columns]
0 评论