создать кадр данных из столбца, имеющего список значений в pandas [duplicate]

Я согласен с ответом от zacherates.

Но вы можете сделать вызов intern () в ваших нелиберальных строках.

Из примера zacherates:

// ... but they are not the same object
new String("test") == "test" ==> false 

Если вы ставите нелитеральное равенство строки, это правда

new String("test").intern() == "test" ==> true 
6
задан Zero 12 October 2017 в 08:16
поделиться

2 ответа

Вы можете выполнить цикл через серию с функцией apply() и преобразовать каждый список в Series, это автоматически расширит список как серию в направлении столбца:

df[0].apply(pd.Series)

#   0    1   2
#0  8   10  12
#1  7    9  11

Обновить : Чтобы сохранить другие столбцы фрейма данных, вы можете связать результат с столбцами, которые вы хотите сохранить:

pd.concat([df[0].apply(pd.Series), df[1]], axis = 1)

#   0    1   2  1
#0  8   10  12  A
#1  7    9  11  B
8
ответ дан Psidom 16 August 2018 в 10:57
поделиться
  • 1
    Как я могу не потерять дополнительную колонку (измененный исходный вопрос)? – user2242044 2 December 2016 в 04:53
  • 2
    Вам нужен метод pd.concat(). Смотрите обновление! – Psidom 2 December 2016 в 04:57

Вы могли бы сделать pd.DataFrame(df[col].values.tolist()) - намного быстрее ~ 500x

In [820]: pd.DataFrame(df[0].values.tolist())
Out[820]:
   0   1   2
0  8  10  12
1  7   9  11

In [821]: pd.concat([pd.DataFrame(df[0].values.tolist()), df[1]], axis=1)
Out[821]:
   0   1   2  1
0  8  10  12  A
1  7   9  11  B

Сроки

Средний

In [828]: df.shape
Out[828]: (20000, 2)

In [829]: %timeit pd.DataFrame(df[0].values.tolist())
100 loops, best of 3: 15 ms per loop

In [830]: %timeit df[0].apply(pd.Series)
1 loop, best of 3: 4.06 s per loop

Большой

In [832]: df.shape
Out[832]: (200000, 2)

In [833]: %timeit pd.DataFrame(df[0].values.tolist())
10 loops, best of 3: 161 ms per loop

In [834]: %timeit df[0].apply(pd.Series)
1 loop, best of 3: 40.9 s per loop
2
ответ дан Zero 16 August 2018 в 10:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: