объедините разные строки столбца в одну строку

#python #dataframe

Вопрос:

У меня есть следующее dataframe

 column1 column2  0 Paul xx  1 John aa  2 Paul gg  3 John xx  4 John bb  5 George gg  . . . 6 Jonathan ff   

Я хочу, чтобы информация о каждом человеке была в одном ряду. На том же row я хочу иметь то же самое index , но в другом column . Поэтому я хочу dataframe вот так:

 column1 column2 column3   0 Paul 0,2 xx, gg   1 John 1,3,4 aa, xx, bb   5 George 5 gg   .  .  .  n Jonathan n ff  

Есть какие-нибудь идеи?

Ответ №1:

Вы можете переместить индекс в столбец с помощью .reset_index() , затем сгруппировать по column1 и объединить в список.

 df2 = df.reset_index().groupby('column1').agg(list).reset_index() df2 # returns:  column1 index column2 0 George [5] [gg] 1 John [1, 3, 4] [aa, xx, bb] 2 Paul [0, 2] [xx, gg]  

Чтобы изменить порядок результатов и задать индекс, как в примере, вы можете использовать:

 ix = pd.Index(df2['index'].str.get(0)).rename(None) df3 = df2.set_index(ix).sort_index() df3 # returns:  column1 index column2 0 Paul [0, 2] [xx, gg] 1 John [1, 3, 4] [aa, xx, bb] 5 George [5] [gg]  

Комментарии:

1. возможно ли, чтобы информация была представлена так, как в первом кадре данных. Итак, сначала Пол, потом Джон, потом Джордж. Также рекомендуется ли включать значения столбца в список?

2. Конечно, смотрите мой обновленный ответ