У меня есть фрейм данных, в котором столбец содержит неравные списки кортежей.Все кортежи будут одинаковой длины, только списки будут неравномерными.Я хочу растопить этот столбец в кадре, чтобы новые столбцы добавлялись к существующему, а строки дублировались.Вот так:
df
name id list_of_tuples
0 john doe abc-123 [('cat',100,'xyz-123'),('cat',96,'uvw-456')]
1 bob smith def-456 [('dog',98,'rst-789'),('dog',97,'opq-123'),('dog',95,'lmn-123')]
2 bob parr ghi-789 [('tree',100,'ijk-123')]
df_new
name id val_1 val_2 val_3
0 john doe abc-123 cat 100 xyz-123
1 john doe abc-123 cat 96 uvw-456
2 bob smith def-456 dog 98 rst-789
3 bob smith def-456 dog 97 opq-123
4 violet parr def-456 dog 95 lmn-123
5 violet parr ghi-789 tree 100 ijk-123
Для моего текущего метода я создаю новый фрейм данных, в котором я использую функцию цепочки из itertools, но я хочу уйти от создания целого другого фрейма данных и объединения его обратнов столбце «id».
Вот мой текущий код:
df_new = pd.DataFrame(list(chain.from_iterable(df.matches)),columns=['val_1','val_2','val_3']).reset_index(drop=True)
df_new['id'] = np.repeat(df.id.values, df['list_of_tuples'].str.len())