2017-10-11 3 views
1

Wie vergleichen kann ich das erwartete Ergebnis aus dem folgenden Datenrahmen erreichenReihen in Pandas Dataframe Der Kombination von mehreren Spalten

df 
      col_1    col_2 col_3  col_4 
    0 Non-Saved www.google.com  POST 20,567 
    1    www.google.com  POST 
    2    www.facebook.com  GET 
    3    www.facebook.com OTHER 
    4    www.linkedin.com  GET 
    5  Saved  www.Quora.com  POST  6,337 
    6    www.gmail.com  POST 
    7    www.gmail.com  GET 

Erwartetes Ergebnis:

  col_1    col_2 col_3  col_4 
    0 Non-Saved www.google.com  POST 20,567 
        www.facebook.com  GET 
        www.linkedin.com OTHER 
    1  Saved  www.Quora.com  POST  6,337 
         www.gmail.com  GET 

von 8 Zeilen 2 Zeilen durch die leeren verschmelzenden Zeichenfolgen in col_1 und col_3. Verketten verschiedener Werte in col_2 und col_3 zu einer Zelle. Kann mir jemand mit einer benutzerdefinierten Funktion dabei helfen?

Antwort

1

Wenn die vorherigen solution worked, dann lassen Sie sie versuchen diesen:

l = lambda x: ' , '.join(x.unique()) 

df = df.apply(lambda x: x.str.strip()).replace('',np.nan) 

print(df.groupby(df.col_1.ffill())\ 
    .agg({'col_2': l,'col_3': l, 'col_4':'first'})\ 
    .reset_index()) 

Ausgang:

 col_1            col_2 \ 
0 Non-Saved www.google.com , www.facebook.com , www.linked... 
1  Saved      www.Quora.com , www.gmail.com 

       col_3 col_4 
0 POST , GET , OTHER 20,567 
1   POST , GET 6,337 
+1

Hergestellt leichte Bearbeitung auf Ihre Antwort als col_2 und col_3 beide benötigten eindeutige Werte sein. Lesen Sie bitte. Vielen Dank! –

+0

@Rooney, du hast es. Ändern Sie einfach die Ausgabe, um zu Ihrer Lösung zu passen. –

Verwandte Themen