Мои данные в ddata.csv выглядят следующим образом:
col1,col2,col3,col4
A,10,a;b;c, 20
B,30,d;a;b,40
C,50,g;h;a,60
Я хочу разделить col3 на несколько столбцов, но на основе их значений. В других случаях я хотел бы, чтобы мои окончательные данные выглядели как
col1, col2, name_a, name_b, name_c, name_d, name_g, name_h, col4
A, 10, a, b, c, NULL, NULL, NULL, 20
B, 30, a, b, NULL, d, NULL, NULL, 40
C, 50, a, NULL, NULL, NULL, g, h, 60
Мой код, на данный момент взятый из этого ответа , является неполным:
import pandas as pd
import string
L = list(string.ascii_lowercase)
names = dict(zip(range(len(L)), ['name_' + x for x in L]))
df = pd.read_csv('ddata.csv')
df2 = df['col3'].str.split(';', expand=True).rename(columns=names)
Имена столбцов «a», «b», «c» ... взяты случайным образом и не имеют отношения к фактическим данным a, b, c.
Прямо сейчас мой код может просто разбить 'col3' на три столбца следующим образом:
name_a name_b name_c
a b c
d e f
g h i
Но, это должно быть как
name_a, name_b, name_c, name_d, name_g, name_h
a, b, c, NULL, NULL, NULL
a, b, NULL, d, NULL, NULL
а, NULL, NULL, NULL, г, ч
и в конце мне нужно просто заменить col3 на эти несколько столбцов.