【问题标题】:Comparing based on unique column values and set a flag based on a condition基于唯一列值进行比较并根据条件设置标志
【发布时间】:2019-03-27 22:32:02
【问题描述】:

我对熊猫和数据框非常陌生。我以前使用过 SQL。我在下面附上了一张表格:

    Sub     DOB         Groups      Mean Val  CheckVol
0   1112    1/1/1980    FirstVisit  6000      0
1   1121    2/2/1980    FirstVisit  6000      0
2   1138    3/3/1980    FirstVisit  6000      0
3   1227    4/4/1980    FirstVisit  6000      0
12  1443    1/1/1980    SecondVisit 5000      0
13  1443    2/2/1980    SecondVisit 5500      0
14  1481    3/3/1980    SecondVisit 6500      1
15  1482    4/4/1980    SecondVisit 5400      0
24  1483    2/2/1980    ThirdVisit  5400      0
25  1490    3/3/1980    ThirdVisit  5400      0

所以我想做的是基于 DOB 进行分组,因为这是比较平均 val 与首次访问的独特之处。如果第二次访问大于第一次,则检查第三次访问,如果第三次访问小于第一次访问,则更改标签。因此,在示例表中,将 14 中的组更改为 ThirdVisit,将 25 更改为 SecondVisit。我在想也许在这种情况下创建一个新列作为名为 checkVol 的标志,而案例 14 将有一个 1。这就是我所拥有的,这是非常错误的:

checkVol = df.groupby('DOB').apply(lambda r: r)
#df.set_index('DOB', inplace=True)
df['checkVol'] = users

感谢您的帮助。

凯文

【问题讨论】:

    标签: python pandas dataframe lambda pandas-groupby


    【解决方案1】:

    IIUC,您可以groupbyDOB 列,然后在您描述的条件下对Mean Val 列使用转换。这将返回一个布尔列,因此您只需将其转换为int

    df['CheckVol'] = df.groupby('DOB')['Mean Val'].transform(lambda x: x > x.iloc[0]).astype(int)
    
    >>> df
         Sub       DOB       Groups  Mean Val  CheckVol
    0   1112  1/1/1980   FirstVisit      6000         0
    1   1121  2/2/1980   FirstVisit      6000         0
    2   1138  3/3/1980   FirstVisit      6000         0
    3   1227  4/4/1980   FirstVisit      6000         0
    12  1443  1/1/1980  SecondVisit      5000         0
    13  1443  2/2/1980  SecondVisit      5500         0
    14  1481  3/3/1980  SecondVisit      6500         1
    15  1482  4/4/1980  SecondVisit      5400         0
    24  1483  2/2/1980   ThirdVisit      5400         0
    25  1490  3/3/1980   ThirdVisit      5400         0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多