Wie split und doppelte Zeilen nach string in einer Spalte mit python / pandas?

Ich habe einen df, wo einige Werte Hinzugefügt werden, um die gleichen Zeile wie das gefälschte df:

    [['Apple, Kiwi, Clementine', np.nan , 'Cycling', 5], 
     ['Kiwi', 'Blue',  np.nan , 20], 
     ['Banana, Clementine',  np.nan , 'Hockey', 12], 
     ['Apple', 'Purple', 'Triathlon', 15], 
     ['Kiwi',  np.nan, 'Swimming', 8]]), 
                     columns=['fruit', 'colour', 'sport', 'wins'])

Was ich möchte ist, um doppelte Zeilen mit mehreren Früchten beim aufteilen der erste Eintrag enthält nur eine Frucht. enter image description here Am Ende möchte ich eine Darstellung der durchschnittlichen Gewinne pro Frucht. Also, wenn es eine Gruppe, wo jedes Obst erwähnt wird, gruppiert mit den richtigen Früchten, so zu sprechen, dass würde auch funktionieren.

Ich habe versucht, einige string-manipulation, sondern dann ist es einfach zerlegt und die Werte in den anderen Spalten nicht doppelt vorkommen. Es ist ziemlich frustrierend, da ich weiß, wie es in r aber bin ein Anfänger in python.

1 Antworten

  • anky_91
    4. Mai 2019

    Verwendung:

    s=pd.DataFrame([[x] + [z] for x, y in zip(df.index,df.fruit.str.split(',')) for z in y],
                   columns=[0,'Fruit'])
    df_new=s.merge(df,left_on=0,right_index=True).drop(0,1)
    print(df_new)
    

             Fruit                    fruit  colour      sport  wins
    0        Apple  Apple, Kiwi, Clementine     NaN    Cycling     5
    1         Kiwi  Apple, Kiwi, Clementine     NaN    Cycling     5
    2   Clementine  Apple, Kiwi, Clementine     NaN    Cycling     5
    3         Kiwi                     Kiwi    Blue        NaN    20
    4       Banana       Banana, Clementine     NaN     Hockey    12
    5   Clementine       Banana, Clementine     NaN     Hockey    12
    6        Apple                    Apple  Purple  Triathlon    15
    7         Kiwi                     Kiwi     NaN   Swimming     8