2016-07-28 2 views
3

Ich habe df und ich versuche, neue Spalte zu erstellen, wo Zahlen aus einer Spalte eine Phrase ist. Ich benutzePython: np.where mit mehreren Bedingung

df["Family"] = np.where(df["Qfamilystatus"] == 1, "Не замужем/Не женат", "Замужем/женат/живу в гражданском браке", "Разведен/ живем порознь", "Вдовец/вдова") 

ich meine 1 - Не замужем/Не женат, 2 - Замужем/женат/живу в гражданском браке, 3 - Разведен/ живем порознь, 4 - Вдовец/вдова Aber es zurückgeben TypeError: function takes at most 3 arguments (5 given) ist ein weiterer Weg, dies zu tun?

Antwort

3

Ich denke, Sie brauchen map Funktion von dictionary.

Probe:

import pandas as pd 


df = pd.DataFrame({'Qfamilystatus':[1,2,3,4]}) 
print (df) 
    Qfamilystatus 
0    1 
1    2 
2    3 
3    4 

d = {1:"Не замужем/Не женат", 
    2:"Замужем/женат/живу в гражданском браке", 
    3:"Разведен/ живем порознь", 
    4: "Вдовец/вдова"} 

df['new'] = df.Qfamilystatus.map(d) 
print (df) 
    Qfamilystatus           new 
0    1      Не замужем/Не женат 
1    2 Замужем/женат/живу в гражданском браке 
2    3      Разведен/ живем порознь 
3    4        Вдовец/вдова 

Dann können Sie neue Spalte category konvertieren, die Speicher speichern:

df['new'] = df.Qfamilystatus.map(d).astype('category') 
print (df) 
    Qfamilystatus           new 
0    1      Не замужем/Не женат 
1    2 Замужем/женат/живу в гражданском браке 
2    3      Разведен/ живем порознь 
3    4        Вдовец/вдова 

print (df.dtypes) 
Qfamilystatus  int64 
new    category 
dtype: object