Pandas groupby и diff на основе двух столбцов - PullRequest
0 голосов
/ 17 апреля 2020

Предположим, у меня есть следующее 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() был между B и C вместо B и B (надеюсь, это имеет смысл). Я могу сделать что-то вроде этого, чтобы достичь diff() Я хочу:

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

Но я застрял на том, как я должен включить это в мои groupby лог c.

Конечный результат будет выглядеть так:

0    NaN
1   -3.0
2    NaN
3   -3.0

Есть идеи?

1 Ответ

2 голосов
/ 17 апреля 2020

IIU C, Использование:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...