Подтвердить что ты не робот

Панда разделить столбец на несколько столбцов через запятую

Я пытаюсь разделить столбец на несколько столбцов на основе разделения запятой/пробела.

Мой фрейм данных в настоящее время выглядит

     KEYS                                                  1
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420, 4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490, 4000.0499, 4000.0500, 4000.0504,

мне бы хотелось

   KEYS                                                  1           2            3        4 
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420  4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490  4000.0499  4000.0500  4000.0504 

Мой код в настоящее время удаляет столбец KEYS, и я не уверен, почему. Может ли кто-нибудь улучшить или помочь решить проблему?

v = dfcleancsv[1]

#splits the columns by spaces into new columns but removes KEYS?

dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
4b9b3361

Ответ 1

Если кто-то хочет разделить один столбец (уменьшенный значением) на несколько столбцов - попробуйте следующее:

series.str.split(',', expand=True)

Это ответило на вопрос, который я пришел сюда в поисках.

Благодарим за код EdChum, который включает добавление разделенных столбцов обратно в кадр данных.

pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)

разделенная документация

Concat Документация

Ответ 2

Использование ответа Edchums

pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)

Я смог решить это, заменив мои переменные.

dfcleancsv = pd.concat([dfcleancsv['KEYS'], dfcleancsv[1].str.split(', ', expand=True)], axis=1)

Ответ 3

ОП имел переменное количество выходных столбцов. В конкретном случае с фиксированным числом выходных столбцов другое элегантное решение для присвоения имени полученным столбцам состоит в использовании множественного назначения

Загрузите образец набора данных и измените его в длинный формат, чтобы получить переменную называется organ_dimension.

import seaborn
iris = seaborn.load_dataset('iris')
df = iris.melt(id_vars='species', var_name='organ_dimension', value_name='value')

Разделите переменную organ_dimension на 2 переменные organ и dimension на основе разделителя _. На основании этого ответа "Как разбить столбец на два столбца?"

df['organ'], df['dimension'] = df['organ_dimension'].str.split('_', 1).str
df.head()

Out[10]: 
  species organ_dimension  value  organ dimension
0  setosa    sepal_length    5.1  sepal    length
1  setosa    sepal_length    4.9  sepal    length
2  setosa    sepal_length    4.7  sepal    length
3  setosa    sepal_length    4.6  sepal    length
4  setosa    sepal_length    5.0  sepal    length

Ответ 4

возможно, это должно работать:

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