pandas系列之apply
- apply函数用于series和dataframe的写法不尽相同,注意区分;
- 此处的action表示一个用户历史点击数据的dataframe;
- 其中,sid_list = actions[‘sid’].unique().tolist()
1.1 基础写法
def func(x):
x = np.random.choice(sid_list)
return x
actions['sid'] = actions['sid'].apply(func)
actions['sid'] = actions.apply(lambda x: func(x['sid']), axis=1)
actions['sid'] = actions['sid'].apply(lambda x: np.random.choice(sid_list))
1.2 进阶写法:带参数
def func(sid, *sid_list):
"""
:param sid: 该用户已点击的sid
:param sid_list: 正样本数据中所有用户点击过的sid列表
:return:
"""
while True:
sample_sid = np.random.choice(sid_list)
if sample_sid != sid:
break
return sample_sid
actions['sid'] = actions['sid'].apply(func, args=sid_list)
1.3 Tips
- 利用带参数的apply方法生成负样本,效率更高!
- apply用于dataframe比series更快!