Pandas DataFrame Group и Rollup в одной операции - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть Pandas DataFrame с двумя столбцами «close_time» сделки (формат DateTime) и «net_profit» из этой сделки.Я поделился некоторыми примерами данных ниже.Мне нужно найти общее количество сделок и количество прибыльных сделок за день.Так, например, вывод будет выглядеть как

+-----------------------------------------------------------+
| Close_day      Total_Trades   Total_Profitable_Trades     |
+-----------------------------------------------------------+
| 2014-11-03     5              4                           |
+-----------------------------------------------------------+

Можно ли это сделать, используя что-то вроде groupby?Как?

+------------------------------------+
|             close_time  net_profit |
+------------------------------------+
| 0  2014-10-31 14:41:41       20.84 |
| 1  2014-11-03 10:50:59      238.74 |
| 2  2014-11-03 11:05:10      491.32 |
| 3  2014-11-03 12:31:06       55.87 |
| 4  2014-11-03 14:31:34     -402.29 |
| 5  2014-11-03 20:33:29      164.18 |
| 6  2014-11-04 16:30:24     -296.96 |
| 7  2014-11-04 23:59:21      281.86 |
| 8  2014-11-04 23:59:34     -296.37 |
| 9  2014-11-05 10:14:42      517.55 |
| 10 2014-11-05 20:38:49      350.35 |
| 11 2014-11-07 11:23:31      710.13 |
| 12 2014-11-07 11:23:38      137.55 |
| 13 2014-11-11 19:00:01      201.97 |
| 14 2014-11-11 19:00:15     -484.77 |
| 15 2014-11-12 23:41:04    -1346.71 |
| 16 2014-11-12 23:41:25      514.30 |
| 17 2014-11-13 18:55:34      103.34 |
| 18 2014-11-13 18:55:43     -180.37 |
| 19 2014-11-26 17:10:59    -1756.69 |
+------------------------------------+

1 Ответ

0 голосов
/ 18 сентября 2018

Настройка

Убедитесь, что ваш close_time равен datetime с помощью

df.close_time = pd.to_datetime(df.close_time)

Вы можете использоватьgroupby и agg здесь:

out = (df.groupby(df.close_time.dt.date)
          .net_profit.agg(['count', lambda x: x.gt(0).sum()])).astype(int)

out.columns = ['trades', 'profitible_trades']

            trades  profitible_trades
close_time
2014-10-31      1         1
2014-11-03      5         4
2014-11-04      3         1
2014-11-05      2         2
2014-11-07      2         2
2014-11-11      2         1
2014-11-12      2         1
2014-11-13      2         1
2014-11-26      1         0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...