Python - Diff разных групп объекта groupby - PullRequest
0 голосов
/ 15 апреля 2019

У меня это как csv, работающий в пандах - первые десять строк:

        yearmonth  MV Quantiles  pead Quantiles  ret_f0f1      rf
0          198301           0.2             0.8 -0.071429  0.0069
1          198301           0.2             0.2  0.010638  0.0069
2          198301           0.2             0.2  0.180328  0.0069
3          198301           0.4             0.2  0.042553  0.0069
4          198301           0.4             0.8  0.000000  0.0069
5          198301           0.2             0.8  0.244889  0.0069
6          198301           0.6             0.8  0.071429  0.0069
7          198301           0.6             1.0 -0.025974  0.0069
8          198301           0.2             0.8  0.097222  0.0069
9          198301           1.0             1.0  0.191489  0.0069

Хотел бы сгруппировать по ['yearmonth', 'MV Quantiles', 'pead Quantiles'] и создать столбец'extra_return', содержащий результат вычитания столбца 'rf' из столбца 'ret_f0f1:

        yearmonth  MV Quantiles  ...      rf  excess_return
0          198301           0.2  ...  0.0069      -0.071429
1          198301           0.2  ...  0.0069       0.010638
2          198301           0.2  ...  0.0069       0.180328
3          198301           0.2  ...  0.0069       0.042553
4          198301           0.2  ...  0.0069       0.000000
5          198301           0.2  ...  0.0069       0.244889
6          198301           0.2  ...  0.0069       0.071429
7          198301           0.2  ...  0.0069      -0.025974
8          198301           0.2  ...  0.0069       0.097222
9          198301           0.2  ...  0.0069       0.191489

Я попытался преобразовать лямбду, но не могу точно вызвать столбец, чтобы выполнить вычитание.Похоже, потому что x это серия вместо df?Другие мысли используют x.diff.

df2.groupby(['yearmonth','MV Quantiles',"pead Quantiles"])['ret_f0f1','rf'].transform(lambda x: x['ret_f0f1']-x['rf'])

Теперь я использую:

df2[df2['pead Quantiles']==1.0].groupby(['yearmonth','MV Quantiles','pead Quantiles'])['ret_f0f1'].mean().reset_index()['ret_f0f1']-df2[df2['pead Quantiles']==0.2].groupby(['yearmonth','MV Quantiles','pead Quantiles'])['ret_f0f1'].mean().reset_index()['ret_f0f1']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...