拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何通过Python上的回圈将笛卡尔积保存到资料帧?

如何通过Python上的回圈将笛卡尔积保存到资料帧?

白鹭 - 2022-02-12 2079 0 0

我有以下字典:

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热心网友回复:

添加joinforit.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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *