gpt4 book ai didi

python - 使用 Groupby 自定义时间段

转载 作者:行者123 更新时间:2023-12-01 04:04:32 25 4
gpt4 key购买 nike

我有以下 Pandas DataFrame:

import datetime as dt
import pandas as pd
import numpy as np

offset = 3 * pd.tseries.offsets.BMonthEnd()

bond_index_1 = pd.date_range('1/1/14', '1/1/18', freq=offset, name='date')
bond_1 = pd.DataFrame(data = np.random.uniform(0, 5, 16),
index= bond_index_1, columns=['cash_flow'])

bond_index_2 = pd.date_range('3/1/14', '3/1/21', freq=offset, name='date')
bond_2 = pd.DataFrame(data = 2*np.random.uniform(0, 10, 28),
index= bond_index_2, columns=['cash_flow'])

df_merged = pd.concat([bond_1, bond_2], keys=['Bond_1', 'Bond_2'])

如何按自定义范围获取 cash_flow 列中的值总和,从 2014 年 6 月 30 日开始,到 2016 年 12 月 31 日结束,间隔为 6 个月

因此,间隔将类似于 2014-06-30、2015-12-31、2015-06-30、2015-12-31、2016-06-30、2016-12-31

它还会忽略 MultiIndex 中的“bond”名称索引。

我尝试使用 TimeGrouper 但无法使其正常工作,因为 TimeGrouper 从时间序列中的最早值开始并向前移动。

最佳答案

resample似乎是解决您的问题的简单方法之一。

print df_merged.reset_index().set_index('date').resample('6M', how='sum', closed='left', loffset='-1M')

产量,

            cash_flow
date
2014-06-30 16.058478
2014-12-31 24.282106
2015-06-30 32.777176
2015-12-31 33.661801
2016-06-30 26.779571
2016-12-31 17.435089
2017-06-30 30.914194
2017-12-31 20.117823
2018-06-30 29.505178
2018-12-31 17.245787
2019-06-30 22.975058
2019-12-31 17.742220
2020-06-30 11.646266
2020-12-31 20.077632

关于python - 使用 Groupby 自定义时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35879757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com