如何使用 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()了解更多
我在数据框中有如下每日库存数据:
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()了解更多