Разнесите один столбец и измените другой

#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