尝试在pandas数据帧中对用户进行分类时设置WithCopyWarning



当我试图在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

最新更新