自定义编码Python


data = {'day_of_the_week':  ['Mon', 'Tue','Wed','Thu','Fri','Sat','Sun'], 'day': [13, 23,7,14,25,16,17],
'month':['January','February','March','April','May','June','July']}
df = pd.DataFrame (data, columns = ['day_of_the_week','day','month'])

我想将"day_of_the_week"列中的分类值转换为数值,例如:周一-->1,星期三-->3,周五->5.

下面的代码没有返回错误,但是df['day_of_the_week_code']中的所有值都返回0。

df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Mon"), 1,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Tue"), 2,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Wed"), 3,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Thu"), 4,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Fri"), 5,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Sat"), 6,0)
df["day_of_the_week_code"] = np.where(df["day_of_the_week"].str.contains("Sun"), 7,0)

您可以使用map:

dow_dict = {'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6, 'Sun': 7}
df['day_of_the_week_code'] = df.day_of_the_week.map(dow_dict)

最新更新