如何将连续 2 个单元格的内容 (df) 转换为 Python 同一行中的多个单元格? Pandas 相关
How can I convert the contents from 2 cells in a row (df) to say several more cells in the same row on Python? Pandas related
假设我有以下 df
(这是一个较大样本的小样本),每行包含 3 个单元格:
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
3 Fondo+Cuerpo+Ojos+Color+Pinzas+Puas Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Purpura.png
4 Fondo+Cuerpo+Ojos+Color+Pinzas+Puas Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Verde.png
.
.
.
列 Permutations
中的所有单元格保持不变,此 df
表示一些 Cartesian Products 是作为特定过程的结果获得的。
我怎样才能让它看起来像下面这个样子?
Fondo Cuerpo Ojos Color Pinzas Puas
0 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas None
1 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Arena.png
2 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Marron.png
3 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Purpura.png
4 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Verde.png
.
.
.
您可以通过用 +
符号拆分 Permutations
列来提取列名。同样,您可以从 FilePermutations
列中提取数据。
import pandas as pd
old_df = pd.read_csv("cartesian.csv")
new_columns = old_df.iloc[0]['Permutations'].split("+")
new_data = []
for i in range(0, len(old_df)):
row_data = old_df.iloc[i]['FilePermutations'].split("+")
current_data = []
for j, column in enumerate(new_columns):
current_data.append(f"{column} {row_data[j]}")
new_data.append(current_data)
updated_df = pd.DataFrame(data=new_data, columns=new_columns)
print(updated_df)
输出:
Fondo Cuerpo ... Pinzas Puas
0 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas None
1 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Arena.png
2 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Marron.png
3 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Purpura.png
4 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Verde.png
[5 rows x 6 columns]
cartesian.csv
Permutations,FilePermutations
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+None
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Arena.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Marron.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Purpura.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Verde.png
假设我有以下 df
(这是一个较大样本的小样本),每行包含 3 个单元格:
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
3 Fondo+Cuerpo+Ojos+Color+Pinzas+Puas Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Purpura.png
4 Fondo+Cuerpo+Ojos+Color+Pinzas+Puas Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Verde.png
.
.
.
列 Permutations
中的所有单元格保持不变,此 df
表示一些 Cartesian Products 是作为特定过程的结果获得的。
我怎样才能让它看起来像下面这个样子?
Fondo Cuerpo Ojos Color Pinzas Puas
0 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas None
1 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Arena.png
2 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Marron.png
3 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Purpura.png
4 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png Ojos Antenas.png Color Amarillo.png Pinzas None Puas Verde.png
.
.
.
您可以通过用 +
符号拆分 Permutations
列来提取列名。同样,您可以从 FilePermutations
列中提取数据。
import pandas as pd
old_df = pd.read_csv("cartesian.csv")
new_columns = old_df.iloc[0]['Permutations'].split("+")
new_data = []
for i in range(0, len(old_df)):
row_data = old_df.iloc[i]['FilePermutations'].split("+")
current_data = []
for j, column in enumerate(new_columns):
current_data.append(f"{column} {row_data[j]}")
new_data.append(current_data)
updated_df = pd.DataFrame(data=new_data, columns=new_columns)
print(updated_df)
输出:
Fondo Cuerpo ... Pinzas Puas
0 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas None
1 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Arena.png
2 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Marron.png
3 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Purpura.png
4 Fondo Oceano.png Cuerpo Cuerpo_cangrejo.png ... Pinzas None Puas Verde.png
[5 rows x 6 columns]
cartesian.csv
Permutations,FilePermutations
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+None
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Arena.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Marron.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Purpura.png
Fondo+Cuerpo+Ojos+Color+Pinzas+Puas,Oceano.png+Cuerpo_cangrejo.png+Antenas.png+Amarillo.png+None+Verde.png