Pandas 为一个系列重新采样()DataFrame,同时复制DataFrame中所有其他系列的值
我想对数据帧中的一个系列进行重采样,其中数据帧中的所有其他系列对于每个索引都具有相同的数据。我可以对有问题的一个系列进行重采样,但如何复制数据 安装程序 如果我以df开头:Pandas 为一个系列重新采样()DataFrame,同时复制DataFrame中所有其他系列的值,pandas,Pandas,我想对数据帧中的一个系列进行重采样,其中数据帧中的所有其他系列对于每个索引都具有相同的数据。我可以对有问题的一个系列进行重采样,但如何复制数据 安装程序 如果我以df开头: value data_1 data_2 data_3 data_4 effective_date 2018-7-31 4.010784 17901701 3mra A
value data_1 data_2 data_3 data_4
effective_date
2018-7-31 4.010784 17901701 3mra Actual 0.01
2018-8-31 2.044298 17901701 3mra Actual 0.01
2018-10-31 11.493831 17901701 3mra Actual 0.01
2018-11-30 13.929844 17901701 3mra Actual 0.01
2018-12-31 21.500490 17901701 3mra Actual 0.01
并希望添加值为0
且所有其他数据保持不变的9月日期:
value data_1 data_2 data_3 data_4
effective_date
2018-7-31 4.010784 17901701 3mra Actual 0.01
2018-8-31 2.044298 17901701 3mra Actual 0.01
2018-9-30 0.000000 17901701 3mra Actual 0.01
2018-10-31 11.493831 17901701 3mra Actual 0.01
2018-11-30 13.929844 17901701 3mra Actual 0.01
2018-12-31 21.500490 17901701 3mra Actual 0.01
迄今为止的代码
我可以使用以下代码重新采样值
:
df.value.resample('M').first().fillna(0)
要获得:
effective_date
2018-07-31 4.010784
2018-08-31 2.044298
2018-09-30 0.000000
2018-10-31 11.493831
2018-11-30 13.929844
2018-12-31 21.500490
将其他值复制到
df
中最有效的方法是什么?在重新采样后,您只需通过在中更改值即可
s=df.resample('M').ffill()
s.value=s.value.where(s.index.isin(df.index),0)
s
Out[249]:
value data_1 data_2 data_3 data_4
effective_date
2018-07-31 4.010784 17901701 3mra Actual 0.01
2018-08-31 2.044298 17901701 3mra Actual 0.01
2018-09-30 0.000000 17901701 3mra Actual 0.01
2018-10-31 11.493831 17901701 3mra Actual 0.01
2018-11-30 13.929844 17901701 3mra Actual 0.01
2018-12-31 21.500490 17901701 3mra Actual 0.01
您可以使用resample
对整个数据帧重新采样,然后用0和ffill
填充“值”列的NA:
df.resample('M').first().fillna({'value': 0}).ffill()
输出:
value data_1 data_2 data_3 data_4
effective_date
2018-07-31 4.010784 17901701.0 3mra Actual 0.01
2018-08-31 2.044298 17901701.0 3mra Actual 0.01
2018-09-30 0.000000 17901701.0 3mra Actual 0.01
2018-10-31 11.493831 17901701.0 3mra Actual 0.01
2018-11-30 13.929844 17901701.0 3mra Actual 0.01
2018-12-31 21.500490 17901701.0 3mra Actual 0.01
我在这里又问了一个相关的问题: