2016-11-30 19 views
0

Angenommen habe ich den folgenden Datenrahmen genannt mapping_df:Wie werden leere Werte in einer Spalte durch geänderte Werte in einer anderen Spalte ersetzt?

mapping | store_id 
--------|--------- 
    a | 1 
    b | 2 
     | 3 
    c | 4 
     | 5 

Ich mag würde es so modifizieren, dass ich

mapping | store_id 
--------|--------- 
    a | 1 
    b | 2 
edit-3 | 3 
    c | 4 
edit-5 | 5 

haben kann ich den folgenden Code, aber ich bin mir nicht sicher, ob seine Pandas zu seinem vollen Potential mit

for idx, value in mapping_df["mapping"].iteritems(): 
    if not value: 
     mapping_df["mapping"].iloc[idx] = "edit-{}".format(mapping_df["store_id"].iloc[idx]) 

Antwort

1

diesen Kerl Versuchen:

df['mapping'] = df[['mapping', 'store_id']].apply(lambda x: x[0] if x[0] else 'edit-%d' % x[1], axis=1) 
0

Wenn die leeren Einträge in der Mapping-Spalte sind NaN und nicht nur leere Zeichenfolge, die man konnte die combine_first() Methode verwenden:

df.mapping = df.mapping.combine_first('edit-' + df.store_id.astype(str)) 
+0

ja, leider sind sie leere Strings sind :( – lollerskates

Verwandte Themen