【问题标题】:Python Pandas - groupby difference with conditionPython Pandas - groupby 与条件的差异
【发布时间】:2023-02-25 00:47:30
【问题描述】:

我有一个像这样的熊猫数据框:

Name Age Flag
"John" 20 1
"John" 23 0
"Marie" 21 1
"John" 26 1
"Marie" 28 0

我想为每一行计算该行中人的年龄与标记为 1 的前行中同一人的最后年龄之间的差异。如果没有标记为 1 的先行行人,我对 0 没意见。我期待像这样的系列作为输出:

Result
0
3
0
6
7

我想做类似的事情:

df
.groupby("Name")
.expanding()
.apply(custom_function)

不幸的是,给予 apply 的 custom_function 只能在系列上工作,我需要访问标志列以找到正确的值来发挥我的作用。

我该如何解决我的问题,是否有更好的解决方案?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试这个:

    df['result'] = df['Age'] - df.sort_values('Flag', ascending=False).groupby('Name')['Age'].transform('min')
    

    输出:

        Name  Age  Flag  result
    0   John   20     1       0
    1   John   23     0       3
    2  Marie   21     1       0
    3   John   26     1       6
    4  Marie   28     0       7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 2020-06-19
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2013-06-20
      相关资源
      最近更新 更多