Панда разделить столбец на несколько столбцов через запятую
Я пытаюсь разделить столбец на несколько столбцов на основе разделения запятой/пробела.
Мой фрейм данных в настоящее время выглядит
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)
Ответы
Ответ 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)