2016-12-07 5 views
3

Dies ist ein Follow-up der Frage here: Wie ändert man einen Datenrahmen mit Funktion? Können sagen, ich rufenden .upper() auf Werte in aVerwenden Sie Funktion zum Ändern Pandas Dataframe

df = pd.DataFrame({'a':['london','newyork','berlin'], 
        'b':['uk','usa','germany'], 
        'c':[7,8,9]}) 

df1 = df[['a', 'b']] 

def doSomething(x): 
    return x.a 

print (df1.apply(doSomething, axis=1)) 
0  london 
1 newyork 
2  berlin 
dtype: object 

call `.upper()` on values in `a`: 
return 
0  LONDON 
1  NEWYORK 
2  BERLIN 
dtype: object 

Antwort

6

Sie rufen Funktion a für Spalte kann zu machen:

def doSomething(x): 
    return x.upper() 

print (df1.a.apply(doSomething)) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

print (df1.a.apply(lambda x: x.upper())) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

Auch sie arbeitet mit:

def doSomething(x): 
    return x.a.upper() 

print (df1.apply(doSomething, axis=1)) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
dtype: object 

aber besser ist str.upper verwenden, die perfekt mit NaN Werten funktioniert:

print (df1.a.str.upper()) 
0  LONDON 
1 NEWYORK 
2  BERLIN 
Name: a, dtype: object 

Wenn neue Spalte müssen hinzufügen:

df['c'] = df1.a.str.upper() 
print (df) 
     a  b  c 
0 london  uk LONDON 
1 newyork  usa NEWYORK 
2 berlin germany BERLIN 
+0

Wie Spalte 'c' zu dieser neu modifizierten Datenrahmen hinzufügen? – DevEx

+0

Sehen Sie die beste Lösung, ich bearbeite Antwort. – jezrael

+0

danke. Ist es möglich, 'c' in der' apply' Lösung hinzuzufügen? – DevEx