python有序数列中增加数据_python – 调整Pandas中的每月时间序列数据

我有像这样的pandas DataFrame.

0b1ad3ee87aa32eb8aa24df95f47fa99.png

如您所见,数据对应于月末数据.问题是所有列的月末日期都不相同. (根本原因是该月的最后一个交易日并不总是与月末重合.)

目前,2016年1月底有两排“2016-01-29”和“2016-01-31”.它应该只是一排.例如,2016年1月底指数A,指数B和指数C应为451.1473 1951.218 1401.093.

另一点是,尽管每行几乎总是对应于月度数据的结尾,但数据可能不够好,并且可以想象包括随机列的月中数据.在这种情况下,我不想进行任何调整,以便捕获任何先前的数据收集错误.

实现这一目标的最有效方法是什么?

编辑:

Index A Index B Index C

DATE

2015-03-31 2067.89 1535.07 229.1

2015-04-30 2085.51 1543 229.4

2015-05-29 2107.39 NaN NaN

2015-05-31 NaN 1550.39 229.1

2015-06-30 2063.11 1534.96 229

2015-07-31 2103.84 NaN 228.8

2015-08-31 1972.18 1464.32 NaN

2015-09-30 1920.03 1416.84 227.5

2015-10-30 2079.36 NaN NaN

2015-10-31 NaN 1448.39 227.7

2015-11-30 2080.41 1421.6 227.6

2015-12-31 2043.94 1408.33 227.5

2016-01-29 1940.24 NaN NaN

2016-01-31 NaN 1354.66 227.5

2016-02-29 1932.23 1355.42 227.3

因此,在这种情况下,我需要在2015-05,2015-10,2016-01结束时组合行.但是,2015-07和2015-08的行根本没有数据.因此,在这种情况下,我想将2015-07和2015-08留作NaN,而我想在2015-05,2015-10,2016-01合并月末行.希望这能为我想要做的事提供更多的洞察力.

最佳答案 您可以使用:

df = df.groupby(pd.TimeGrouper('M')).fillna(method='ffill')

df = df.resample(rule='M', how='last')

创建一个新的DateTimeIndex,以月的最后一天结束,并为每个月的最后一个可用数据点进行采样. fillna()确保对于上次可用日期缺少数据的列,使用先前的可用值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值