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

2024-03-28 15:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在数据框中有每日股票数据,如下所示:

 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   

然后,我将这些数据转换成每周的股票数据,并按照下面的步骤进行计算(每周的期末)

     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 final列,并将weekly final中的值映射到daily dataframe中相应的weekly\u编号,以生成以下内容:

    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语句,但不断遇到与不同数据帧大小有关的错误。你知道吗

提前谢谢


Tags: 数据numberclosedateopenchangefinallow
1条回答
网友
1楼 · 发布于 2024-03-28 15:23:08

你可以这么做。你知道吗

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

查看pandas.merge()了解更多信息

相关问题 更多 >