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.
2 odpowiedzi
Wygląda na to, że chcesz groupby.agg
z join
:
df.groupby('left_id').right_id.agg(', '.join).reset_index()
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)
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.