【问题标题】:Assign values to a column based on Min and Max of a particular group根据特定组的最小值和最大值为列分配值
【发布时间】:2021-09-09 15:25:44
【问题描述】:

我有 3 个字段 Cust_ID、Acc_No 和 Product,如下表所示

我需要为每个 Cust_ID 添加一个基于“产品”值的“类型”列。如果客户的所有“产品”值介于“a”到“m”或“n”到“z”之间,则应将其标记为“单”,否则应标记为“多”,如下表所示

我正在尝试按“Cust_ID”分组并将“产品”的最小值和最大值与范围“=n”进行比较,但无法成功实施。任何帮助将不胜感激,在此先感谢。

【问题讨论】:

  • 请不要使用图片展示代码。复制并粘贴问题中的代码!

标签: python dataframe pandas-groupby apply


【解决方案1】:

你可以使用.groupby.transform + Series.between:

df["Type"] = df.groupby("Cust_ID")["Product"].transform(
    lambda x: np.where(
        x.between("a", "m").all() | x.between("n", "z").all(),
        "Single",
        "Multiple",
    )
)
print(df)

打印:

   Cust_ID  Acc_No Product      Type
0        1     111       a    Single
1        1     112       b    Single
2        1     113       c    Single
3        2     221       a  Multiple
4        2     222       x  Multiple
5        2     223       y  Multiple
6        3     331       z    Single
7        3     332       x    Single

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2016-09-06
    • 1970-01-01
    • 2016-04-04
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多