Python 将带有外部元组的拆分方案应用于

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,

我有一个user_id的数据帧和一个介于0到1之间的数字,我想用一个方案将其连接起来,如下所示(如果hash_number在0到0.5之间,那么测试,否则控制):

我想告诉哪个用户属于哪个组,如下所示:

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