2016-07-28 11 views
3

私はdfを持っていて、新しい列を作成しようとしました。ここで、ある列の数値はいくつかの句です。私は1 - Не замужем/Не женат, 2 - Замужем/женат/живу в гражданском браке, 3 - Разведен/ живем порознь, 4 - Вдовец/вдова を意味する。しかし、それはTypeError: function takes at most 3 arguments (5 given) を返すPython:複数の条件を持つnp.where

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

を使用 は、これを行うための別の方法ですか?

答えて

3

mapの機能がdictionaryであると思います。

サンプル:

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        Вдовец/вдова 

その後、あなたはメモリを節約categoryに新しい列を変換することができます:

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 
関連する問題