如何使用 PANDAS 将一个数据帧的值映射到不同长度的第二个数据帧

How to map values of one dataframe to asecond dataframes of different length using PANDAS

我在数据框中有如下每日库存数据:

 Date       Open      High       Low     Close    Volume    Change    Week_Number    
1   2018-03-19  0.479304  0.479304  0.479304  0.479304    2050 -0.040000           12             
2   2018-03-20  0.479304  0.479304  0.479304  0.479304       0  0.000000           12              
3   2018-03-21  0.499275  0.499275  0.489290  0.489290   28265  0.020833           12             
4   2018-03-22  0.489290  0.489290  0.489290  0.489290      75  0.000000           12               
5   2018-03-23  0.489290  0.489290  0.489290  0.489290       0  0.000000           12               
6   2018-03-26  0.489290  0.489290  0.479304  0.479304    7020 -0.020408           13               
7   2018-03-27  0.479304  0.479304  0.479304  0.479304       0  0.000000           13               
8   2018-03-28  0.474312  0.474312  0.474312  0.474312    2861 -0.010417           13               
9   2018-03-29  0.474312  0.474312  0.474312  0.474312       0  0.000000           13               
10  2018-03-30  0.474312  0.474312  0.474312  0.474312       0  0.000000           13               
11  2018-04-02  0.474312  0.474312  0.474312  0.474312       0  0.000000           14   

然后我获取这些数据并将其转换为每周库存数据并按照以下方式执行计算 (weekly_Final)

     Open      High       Low     Close   Volume    Change  Weekly_Final
Year Week_Number                                                                         
2018 12           0.479304  0.499275  0.479304  0.489290    30390       NaN             2
     13           0.489290  0.489290  0.474312  0.474312     9881 -0.030612             1
     14           0.474312  0.474312  0.474312  0.474312        0  0.000000             0
     15           0.474312  0.474312  0.449348  0.459333    40277 -0.031579             3
     16           0.459333  0.469319  0.459333  0.469319    10000  0.021739             0

我现在需要做的是获取每周最后一列并将每周最后一列中的值映射到每日数据框中相应的 weekly_Number 以生成以下内容:

    Date       Open      High       Low     Close    Volume    Change    Week_Number   Weekly_Final 
1   2018-03-19  0.479304  0.479304  0.479304  0.479304    2050 -0.040000           12             2
2   2018-03-20  0.479304  0.479304  0.479304  0.479304       0  0.000000           12             2 
3   2018-03-21  0.499275  0.499275  0.489290  0.489290   28265  0.020833           12             2
4   2018-03-22  0.489290  0.489290  0.489290  0.489290      75  0.000000           12             2  
5   2018-03-23  0.489290  0.489290  0.489290  0.489290       0  0.000000           12             2  
6   2018-03-26  0.489290  0.489290  0.479304  0.479304    7020 -0.020408           13             1  
7   2018-03-27  0.479304  0.479304  0.479304  0.479304       0  0.000000           13             1  
8   2018-03-28  0.474312  0.474312  0.474312  0.474312    2861 -0.010417           13             1  
9   2018-03-29  0.474312  0.474312  0.474312  0.474312       0  0.000000           13             1  
10  2018-03-30  0.474312  0.474312  0.474312  0.474312       0  0.000000           13             1  
11  2018-04-02  0.474312  0.474312  0.474312  0.474312       0  0.000000           14             0

我是 python/pandas 的新手,到目前为止,我尝试实现这一目标的尝试惨遭失败。

我曾尝试使用 pd.np.where 语句,但我不断遇到与不同数据帧大小相关的错误。

提前致谢

你可以做到这一点。

pd.merge(left=daily_stock_data, right=weekly_stock_data[['Week_Number', 'Weekly_Final']], how="inner", on="Week_Number")

查看pandas.merge()了解更多