将新元素添加到pandas数据帧中的列中



我有一个熊猫数据帧,如下所示:

df1:                              
id  name   gender
1   Alice  Male 
2   Jenny  Female
3   Bob    Male

现在我想添加一个新的专栏sport,它将以列表的形式包含值。我想把足球添加到性别为男性的行列中,所以df1看起来像:

df1:                              
id  name   gender  sport
1   Alice  Male    [Football]
2   Jenny  Female   NA
3   Bob    Male    [Football]

现在,如果我想在性别为女性的行中添加羽毛球,在性别为男性的行中增加网球,那么最终输出为:

df1:                              
id  name   gender  sport
1   Alice  Male    [Football,Tennis]
2   Jenny  Female  [Badminton]
3   Bob    Male    [Football,Tennis]

如何在python中编写一个通用函数,以完成基于其他列值将新值附加到列中的任务?

以下内容应该适用于您。用空列表初始化列并继续

df['sport'] = np.empty((len(df), 0)).tolist()
def append_sport(df, filter_df, sport):
df.loc[filter_df, 'sport'] = df.loc[filter_df, 'sport'].apply(lambda x: x.append(sport) or x)
return df
filter_df = (df.gender == 'Male')
df = append_sport(df, filter_df, 'Football')
df = append_sport(df, filter_df, 'Cricket')

输出

id  name    gender  sport
0   1   Alice   Male    [Football, Cricket]
1   2   Jenny   Female  []
2   3   Bob     Male    [Football, Cricket]

最新更新