【问题标题】:python random customerIDpython随机客户ID
【发布时间】:2018-03-26 15:33:16
【问题描述】:

大家, 我有一个 OrderID,如下所示的第一列。在第二列中,我需要根据以下条件随机分配客户 ID:

给定相同的 OrderID,CustomerID 应该相同; CustomerID 可以重复 1 次以上,但限制为 5 次,因为客户可以多次购买。例如,客户 123 有两个 OrderID:A01 和 A03。

OrderID CustomerID
A01 123
A01 123
A02 145
A03 123
A02 145

以下是我的尝试,但没有达到我的目的。

np.random.seed(0)
df['CustomerID'] = np.random.randint(100, 999, len(df))

【问题讨论】:

  • 客户 ID 是否应该从 OrderID 生成?
  • “随机分配客户 ID”与此不兼容:“给定相同的 OrderID,客户 ID 应该相同”——是随机的还是不是?
  • 为什么没有达到你的目的?
  • 如果 np.random.randint 不在(客户 ID)中,是否有效?还是 CustomerID 的每个数字都在 100 到 999 之间?

标签: python pandas random


【解决方案1】:

试试这个

    import uuid
order_ids_map = {} # mapping order ids to customer ids
order_ids = ['A01', 'A01', 'A02', 'A03', 'A02']

for order_id in order_ids:
    if order_id not in order_ids_map:   # create new customer id
        customer_id = uuid.uuid4()
        order_ids_map[order_id] = customer_id
    print str.format('customer id for order id {0} is {1}', order_id, str(customer_id))
# now order_ids_map contains a map between order_ids and customer_ids

【讨论】:

    【解决方案2】:

    根据您的语法,我假设您使用的是pandas(我在您的原始帖子中添加了pandas 标签)。您可能会找到更好的方法来做到这一点,但这是一种方法,通过创建一个名为 customers 的单独数据框,其中仅包含您的唯一订单 ID 和每个订单 ID 的随机整数,然后将其与您的原始数据框合并在一起:

    如果您从只有 OrderID 的数据框开始:

    import pandas as pd
    import numpy as np
    
    # Original df:
    >>> df
      OrderID
    0     A01
    1     A01
    2     A02
    3     A03
    4     A02
    
    customers = pd.DataFrame({'OrderID':df['OrderID'].unique(), 
                         'CustomerID':np.random.randint(100,999, len(df['OrderID'].unique()))})
    
    df = df.merge(customers, on='OrderID')
    
    # New df:
    >>> df
      OrderID  CustomerID
    0     A01         513
    1     A01         513
    2     A02         279
    3     A02         279
    4     A03         655
    

    【讨论】:

    • 不客气!请投票和/或接受答案以表达您的感激之情:)!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2013-01-21
    • 2023-03-07
    • 2021-05-14
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多