【问题标题】:Pandas groupby and diff based on two columnsPandas groupby 和 diff 基于两列
【发布时间】:2020-07-31 07:01:12
【问题描述】:

假设我有以下dataframe

df = pd.DataFrame(
    {
        'A': ['a', 'a', 'b', 'b'],
        'B': [10, 8, 6, 4],
        'C': [9, 7, 5, 3]
    }
)

我想实现这个:

df.groupby('A').B.apply(lambda x: x.diff())

但我希望diff() 介于BC 之间,而不是介于BB 之间(希望这是有道理的)。我可以做这样的事情来实现我所追求的diff()

df.C.shift(-1)-df.B

但我不知道应该如何将它合并到我的 groupby 逻辑中。

最终结果如下:

0    NaN
1   -3.0
2    NaN
3   -3.0

有什么想法吗?

【问题讨论】:

  • 不确定这是否是您要查找的内容df.groupby('A').pipe(lambda g: g.C.last() - g.B.first())

标签: python pandas dataframe lambda pandas-groupby


【解决方案1】:

IIUC,用途:

s = df.groupby('A').apply(lambda x: x.C - x.B.shift()).reset_index(drop=True)
print(s)

打印出来:

0    NaN
1   -3.0
2    NaN
3   -3.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2023-01-05
    • 2021-11-19
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多