我有df,我尝试创建新列,其中一列的数字是一些短语。 我用
TOO SMALL
我的意思是df["Family"] = np.where(df["Qfamilystatus"] == 1, "Не замужем / Не женат", "Замужем / женат / живу в гражданском браке", "Разведен/ живем порознь", "Вдовец / вдова")
但它返回1 - Не замужем / Не женат, 2 - Замужем / женат / живу в гражданском браке, 3 - Разведен/ живем порознь, 4 - Вдовец / вдова
另一种方法是这样做吗?
答案 0 :(得分:3)
我认为dictionary
需要map
功能。
样品:
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