Pracuję na danych, które mają postać ramki danych. Moja ramka danych to:

left_id  right_id

  a         b
  a         c
  c         e

Chcę kodować w taki sposób, aby uzyskać wynik jak poniżej:

 key    value

  a      b,c
  c       e

W wejściowej ramce danych a wystąpiło dwukrotnie. raz z c i raz z b. stąd wartość a jest przypisywana zarówno jako b, jak i c. Dla c wartość jest przypisana jako e.

Proszę, pomóż mi z tym problemem.

0
Raj Rajeshwari Prasad 15 marzec 2020, 21:35

2 odpowiedzi

Najlepsza odpowiedź

Wygląda na to, że chcesz groupby.agg z join:

df.groupby('left_id').right_id.agg(', '.join).reset_index()
2
yatu 15 marzec 2020, 18:38

Możesz pogrupować „left_id”, a następnie wywołać funkcje agg () obiektów DataFrame Pandy na „right_id”.

Funkcja agregacji zapewniana przez funkcję agg () umożliwia obliczenie wielu statystyk na grupę w jednym obliczeniu.

df.groupby('left_id', as_index = False).agg({'right_id': ' '.join})

Lub jeśli chcesz po prostu połączyć ciągi znaków w kolumnę obiektów list, możesz również:

df.groupby('left_id')['right_id'].apply(list)
0
Shadab Hussain 15 marzec 2020, 18:42