Python 将带有外部元组的拆分方案应用于
我有一个user_id的数据帧和一个介于0到1之间的数字,我想用一个方案将其连接起来,如下所示(如果hash_number在0到0.5之间,那么测试,否则控制): 我想告诉哪个用户属于哪个组,如下所示:Python 将带有外部元组的拆分方案应用于,python,pandas,Python,Pandas,我有一个user_id的数据帧和一个介于0到1之间的数字,我想用一个方案将其连接起来,如下所示(如果hash_number在0到0.5之间,那么测试,否则控制): 我想告诉哪个用户属于哪个组,如下所示: desired_split_data = pd.DataFrame([(1, 0.95, 'control'), (2, 0.21, 'test'), (3,
desired_split_data = pd.DataFrame([(1, 0.95, 'control'),
(2, 0.21, 'test'),
(3, 0.52, 'control'),
(4, 0.89, 'control')],
columns=('user_id', 'hashed_number', 'group'))
这方面的任何帮助都将是惊人的 用于匹配值并通过以下方式设置新组值:
您可以使用
pd.Series.map(…)
:
split_data['group']=split_data['hashed_number'].map(lambda x:next(如果(el[0]x)为split_方案中的el,则为el[2]))
产出:
user\u id哈希数字组
01 0.95对照组
1 2 0.21测试
2 3 0.52控制
3 4 0.89控制
不错!请注意,默认情况下,之间的是包含的,因此根据split\u方案中组的顺序,用户可能会进入不同的组
desired_split_data = pd.DataFrame([(1, 0.95, 'control'),
(2, 0.21, 'test'),
(3, 0.52, 'control'),
(4, 0.89, 'control')],
columns=('user_id', 'hashed_number', 'group'))
for s, e, g in split_scheme:
m = split_data['hashed_number'].between(s, e)
split_data.loc[m, 'group'] = g
print (split_data)
user_id hashed_number group
0 1 0.95 control
1 2 0.21 test
2 3 0.52 control
3 4 0.89 control