当我试图在pandas数据帧、中对用户进行分类时,收到了SettingWithCopyWarning
我有一个Dataframe,它包含一个"user_id"列,如果它包含在一个确定的列表中,它会给我一个值,如果不包含,它就会给我另一个
在这种情况下,我试图创建一个新列,该列给定了一个确定的条件,(如果id在列表中(它会在新列中给我一个"male"字符串作为值,但如果id不在列表中,它会给我一一个female,这就是我正在尝试的:
def select_user_type(df, male_list):
types = {
1: 'female',
2: 'male'
}
search_column = 'user_id'
df['user_sex'] = df.apply(lambda x: types[2] if x[search_column] in male_list else types[1], axis=1)
return df
我得到的错误是以下
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
示例:
male_list = [354, 899] #Example
输出:
name user_id user_sex
Jane 890 female
Jean 899 male
Rita 708 female
John 354 male
似乎对我来说没有问题。然而,让我们尝试一下;
def select_user_type(df, male_list):
types = {
1: 'female',
2: 'male'
}
search_column = 'user_id'
df = df.assign(user_sex=df.apply(lambda x: types[2] if x[search_column] in male_list else types[1], axis=1))
return df