У меня есть DataFrame df
:
a b c
0 7 5 [[-4, 7], [-5, 6]]
1 13 5 [[-9, 4], [-3, 7]]
Я хочу свести столбец со списком ячеек списков (столбец 'c') в отдельный DataFrame, такой что:
- Отдельные списки соответствуют отдельным записям
- Элементы отдельных списков разбиты на новые столбцы
Мне удается получить желаемый результат ниже (я понимаю, что былопреобразование int
в float
, но это меня не беспокоит):
a b d e
0 7 5 -4.0 7.0
1 7 5 -5.0 6.0
2 13 5 -9.0 4.0
3 13 5 -3.0 7.0
Однако я считаю, что способ, которым я это делаю, не идеален, так как он сначала использует много кода,и во-вторых использует iterrows()
.
Ниже мой код:
old_cols = list(df)
old_cols.remove('c')
new_cols = ['d', 'e']
all_cols = old_cols + new_cols
df_flat = pd.DataFrame(columns=all_cols)
for idx, row in df.iterrows():
data = row['c']
for entry in data:
temp_series = pd.Series(index=new_cols)
temp_series['d'] = entry[0]
temp_series['e'] = entry[1]
new_row = pd.concat([row[old_cols], temp_series])
df_flat = df_flat.append(new_row, ignore_index=True)