#python-3.x #pandas #dataframe
#python-3.x #панды #фрейм данных
Вопрос:
Такой набор данных, как этот:
df = pd.DataFrame(np.array([[1, 1, "this is"], [1, 2, "a sample"], [2, 1, "dataset"]]),
columns=['row', 'col', 'word'])
row col word
0 1 1 this is
1 1 2 a sample
2 2 1 dataset
Я хотел бы разнести слово столбца на основе пробельного символа и обновить col.
Таким образом, ожидаемый результирующий набор данных в этом случае будет:
row col word
0 1 1 this
1 1 2 is
2 1 3 a
3 1 4 sample
2 2 1 dataset
Разнесение на основе пробельного символа может быть достигнуто путем применения:
df.assign(word=df['word'].str.split(' ')).explode('word', ignore_index=True)
row col word
0 1 1 this
1 1 1 is
2 1 2 a
3 1 2 sample
4 2 1 dataset
Но проблема в том, что col, очевидно, не обновляется. Есть идеи о том, как этого добиться?
Комментарии:
1. Каков ваш ожидаемый результат?
Ответ №1:
Давайте попробуем groupby().cumcount()
:
(df.assign(word=df['word'].str.split(' '))
.explode('word', ignore_index=True)
.assign(col=lambda x:x.groupby('row').cumcount() 1)
)
Вывод:
row col word
0 1 1 this
1 1 2 is
2 1 3 a
3 1 4 sample
4 2 1 dataset