Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 为一个系列重新采样()DataFrame,同时复制DataFrame中所有其他系列的值_Pandas - Fatal编程技术网

Pandas 为一个系列重新采样()DataFrame,同时复制DataFrame中所有其他系列的值

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

我想对数据帧中的一个系列进行重采样,其中数据帧中的所有其他系列对于每个索引都具有相同的数据。我可以对有问题的一个系列进行重采样,但如何复制数据

安装程序 如果我以df开头:

                    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

我在这里又问了一个相关的问题: