Python 合并不同时间间隔的数据帧时,如何用常量值填充NAN

Python 合并不同时间间隔的数据帧时,如何用常量值填充NAN,python,pandas,dataframe,Python,Pandas,Dataframe,我正在将一个大时间间隔的数据帧合并到另一个小时间间隔的数据帧中,并希望合并列的值保持不变,而不是NaN。 随着日期的上升,我希望人口保持不变,直到更新,而不是显示 数据帧A DATE, Close, High, Low, Open 959731080000000 106.600 106.600 106.600 106.600 959731380000000 106.650 106.650 106.650 106.650 959732340000000 106.640 106.

我正在将一个大时间间隔的数据帧合并到另一个小时间间隔的数据帧中,并希望合并列的值保持不变,而不是NaN。
随着日期的上升,我希望人口保持不变,直到更新,而不是显示

数据帧A

DATE, Close, High, Low, Open
959731080000000 106.600 106.600 106.600 106.600     
959731380000000 106.650 106.650 106.650 106.650     
959732340000000 106.640 106.650 106.640 106.650     
959732880000000 106.660 106.660 106.660 106.660     
959733180000000 106.670 106.670 106.670 106.670  
959733240000000 106.660 106.660 106.660 106.660 
959734200000000 106.610 106.610 106.580 106.580 
959734320000000 106.600 106.600 106.600 106.600 
959735820000000 106.620 106.620 106.620 106.620 
959736240000000 106.630 106.640 106.630 106.630 
959736540000000 106.620 106.620 106.620 106.620 
959736780000000 106.640 106.670 106.640 106.670
959736960000000 106.690 106.690 106.690 106.690 
959743320000000 106.690 106.700 106.690 106.700 
959745660000000 106.700 106.750 106.250 106.260 
959745720000000 106.270 106.280 106.270 106.280
959745900000000 106.270 106.270 106.270 106.270
数据帧B

DATE, Population
959731080000000 123.456     
959732880000000 124.834    
959736780000000 125.456
将B合并为A

A = A.merge(B, how='left')

DATE, Close, High, Low, Open, Population
959731080000000 106.600 106.600 106.600 106.600 123.456    
959731380000000 106.650 106.650 106.650 106.650 NaN    
959732340000000 106.640 106.650 106.640 106.650 NaN    
959732880000000 106.660 106.660 106.660 106.660 124.834    
959733180000000 106.670 106.670 106.670 106.670 NaN 
959733240000000 106.660 106.660 106.660 106.660 NaN
959734200000000 106.610 106.610 106.580 106.580 NaN
959734320000000 106.600 106.600 106.600 106.600 NaN
959735820000000 106.620 106.620 106.620 106.620 NaN
959736240000000 106.630 106.640 106.630 106.630 NaN
959736540000000 106.620 106.620 106.620 106.620 NaN
959736780000000 106.640 106.670 106.640 106.670 125.456
959736960000000 106.690 106.690 106.690 106.690 NaN
959743320000000 106.690 106.700 106.690 106.700 NaN
959745660000000 106.700 106.750 106.250 106.260 NaN
959745720000000 106.270 106.280 106.270 106.280 NaN
959745900000000 106.270 106.270 106.270 106.270 NaN
我希望人口数量像这样填充NaN单元格(因为人口数量在现实中是恒定的)

===============================================================================
我尝试将B列的填充数存储为一个列表,并使用if语句在a列的填充列中循环。它什么也不做

series = [i for i in B['POPULATION']]
for i in A['POPULATION']:
    for k in series:
        if i == k:
            A['POPULATION'].fillna(k)
您可以使用:

你也可以试试这个-

for i in A['Population']:
   if i != NaN:
      prev = i
   else:
      i = prev

有什么问题吗?在我这方面,这似乎只是使整个列成为第一个人口数字。123.456一路往下看每个数字。@Renoldus-你现在可以检查吗?然后在
merge\u asof
之前使用
B=B.sort\u values('DATE')
。我的日期和我想象的不一样。我删除了这个问题,因为我在“日期”栏中犯了错误。我不想因为一个糟糕的问题而得票。也许你仍然会得到最好答案的分数。谢谢你的帮助。
A = pd.merge_asof(A,B,on='DATE')
print (A)
               DATE   Close    High     Low    Open  Population
0   959731080000000  106.60  106.60  106.60  106.60     123.456
1   959731380000000  106.65  106.65  106.65  106.65     123.456
2   959732340000000  106.64  106.65  106.64  106.65     123.456
3   959732880000000  106.66  106.66  106.66  106.66     124.834
4   959733180000000  106.67  106.67  106.67  106.67     124.834
5   959733240000000  106.66  106.66  106.66  106.66     124.834
6   959734200000000  106.61  106.61  106.58  106.58     124.834
7   959734320000000  106.60  106.60  106.60  106.60     124.834
8   959735820000000  106.62  106.62  106.62  106.62     124.834
9   959736240000000  106.63  106.64  106.63  106.63     124.834
10  959736540000000  106.62  106.62  106.62  106.62     124.834
11  959736780000000  106.64  106.67  106.64  106.67     125.456
12  959736960000000  106.69  106.69  106.69  106.69     125.456
13  959743320000000  106.69  106.70  106.69  106.70     125.456
14  959745660000000  106.70  106.75  106.25  106.26     125.456
15  959745720000000  106.27  106.28  106.27  106.28     125.456
16  959745900000000  106.27  106.27  106.27  106.27     125.456
for i in A['Population']:
   if i != NaN:
      prev = i
   else:
      i = prev