2017-05-18 4 views

Antwort

1
def f(df): 
    lol = df.belongs.str.split(',').tolist() 
    lens = [len(lst) for lst in lol] 
    belongs = ','.join(map(str, np.concatenate(lol))) 
    match = ','.join(map(str, df.match.repeat(lens).tolist())) 

    return pd.Series(dict(
      belongs=belongs, 
      match=match 
     )) 

df.groupby(['Name', 'Thing']).apply(f).reset_index() 

    Name Thing belongs  match 
0 John  10 1,2,3,2,4 9,9,9,8,8 

ein etwas anderer Ansatz. Das Bestimmen der Unterschiede ist eine Aufgabe für den Leser.

def f(df): 
    lens = df.belongs.str.count(',') + 1 
    belongs = df.belongs.str.cat(sep=',') 
    match = df.match.repeat(lens).map(str).str.cat(sep=',') 

    return pd.Series(dict(
      belongs=belongs, 
      match=match 
     )) 

print(df.groupby(['Name', 'Thing']).apply(f).reset_index()) 

    Name Thing belongs  match 
0 John  10 1,2,3,2,4 9,9,9,8,8 
+0

Ich bin Fehler immer auf ‚Spiel‘ string - Kann nicht werfen Arraydaten aus dtype (‚int64‘) dtype (‚int32‘) nach der Regel ‚sicher‘) Kann es irgendwie gelöst werden? – SystemFailure

Verwandte Themen