pandas - общее количество владений на даты, основанное на количестве транзакций и датах - PullRequest
0 голосов
/ 16 октября 2018

Я хочу иметь возможность определять авуары в моменты времени на основе таблицы транзакций, например так ...

transaction    date         amount
initial        2018-10-12   3
additional1    2018-10-13   1
additional2    2018-10-15   5

Выходные данные будут отображать авуары на каждую дату в выбранном диапазоне дат...

date         holdings
2018-10-11   0
2018-10-12   3
2018-10-13   4
2018-10-14   4
2018-10-15   9

Я чувствую, что на этот тип вопросов, наверное, уже отвечали где-то раньше в stackoverflow, но поразите меня, если я смогу его найти!

Я начал с заполнения индекса фрейма данныхс выбранным диапазоном дат:

pd.DataFrame(index=pd.date_range(start='2018-10-11', end=date.today()))

Я думаю, что следующим шагом будет использование цикла for с groupby и cumsum, но я просто не могу решить это.Также беспокоит, что использование цикла будет медленным на больших наборах данных.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 16 октября 2018

Используйте что-то вроде этого:

    In [186]: df1
    Out[186]: 
       amount        date
    0       3  2018-10-12
    1       1  2018-10-13
    2       5  2018-10-15

    In [188]: df
    Out[188]: 
            date
    0 2018-10-11
    1 2018-10-12
    2 2018-10-13
    3 2018-10-14
    4 2018-10-15
    5 2018-10-16

    In [192]: d2 = pd.merge(df,df1,on='date', how='left')

    In [193]: d2['cumulative'] = d2.amount.cumsum()
    In [195]: d2
Out[195]: 
        date  amount  cumulative
0 2018-10-11     NaN         NaN
1 2018-10-12     3.0         3.0
2 2018-10-13     1.0         4.0
3 2018-10-14     NaN         NaN
4 2018-10-15     5.0         9.0
5 2018-10-16     NaN         NaN

In [202]: d2 = d2.fillna(method='ffill')

In [203]: d2
Out[203]: 
        date  amount  cumulative
0 2018-10-11     NaN         NaN
1 2018-10-12     3.0         3.0
2 2018-10-13     1.0         4.0
3 2018-10-14     1.0         4.0
4 2018-10-15     5.0         9.0
5 2018-10-16     5.0         9.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...