我有一个熊猫数据帧,如下所示:
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]