将一个数据框中的百分比应用于其他数据框中的列以创建新数据框
Applying percentage in one dataframe to columns in other data frame to create new dataframe
我是 python 的新手,所以这可能是一个愚蠢而简单的问题。
我有两个数据框,第一个数据框有一个百分比列,需要应用于 Dataframe2 中的 A、B、C 列。有什么建议吗?
数据框 1
区域百分比
南方 34.4%
北 27.0%
西部 21.2%
东部 14.8%
其他 2.6%
数据框 2
周结束上限预测值下限状态预测日期
22/05/2022 2112.2 2316.4 2525.9 CA 30/05/2022
29/05/2022 2123.8 2331.1 2523.4 CA 30/05/2022
5/06/2022 2136.5 2340.5 2553.8 CA 30/05/2022
12/06/2022 2148.466667 2353.433333 2562.266667 CA 30/05/2022
19/06/2022 2160.616667 2365.483333 2576.216667 CA 30/05/2022
26/06/2022 2172.766667 2377.533333 2590.166667 CA 30/05/2022
所需数据框
区域周结束上限预测值下限状态预测日期
南 22/05/2022 726.6 796.8 868.9 CA 30/05/2022
北 22/05/2022 570.3 625.4 682.0 CA 30/05/2022
西部 22/05/2022 447.8 491.1 535.5 CA 30/05/2022
东部 22/05/2022 312.6 342.8 373.8 CA 30/05/2022
其他 22/05/2022 54.9 60.2 65.7 CA 30/05/2022
南 29/05/2022 730.6 801.9 868.0 CA 30/05/2022
北 29/05/2022 573.4 629.4 681.3 CA 30/05/2022
西部 29/05/2022 450.2 494.2 535.0 CA 30/05/2022
东部 29/05/2022 314.3 345.0 373.5 CA 30/05/2022
其他 29/05/2022 55.2 60.6 65.6 CA 30/05/2022
南 5/06/2022 735.0 805.1 878.5 CA 30/05/2022
北 5/06/2022 576.9 631.9 689.5 CA 30/05/2022
西部 5/06/2022 452.9 496.2 541.4 CA 30/05/2022
东部 5/06/2022 316.2 346.4 378.0 CA 30/05/2022
其他 5/06/2022 55.5 60.9 66.4 CA 30/05/2022
请在下面的 excel 图片中找到,希望上面带有 excel 图片的数据会更有意义。如果他们允许的话,我很乐意附上 excel。在此先感谢您的帮助。
enter image description here
1. 因为我们没有公共键(列),所以我们不能合并它们,所以技巧是使两个 DF 大小相同。
1.1 使 df1 到 30 行,重复相同的行块:
df1 = pd.concat([df1]*6, ignore_index=True)
1.2 使 df2 到 30 行重复 index
这次:
df2 = df2.loc[df2.index.repeat(5)].reset_index(drop=True)
2. 现在我们有 2 个相同大小的 dfs (length),我们可以 concat()
它们:
df3 = pd.concat([df1, df2], axis=1)
3. 现在是时候将 3 列乘以“百分比”(我已经删除了 "%" 使它更容易) 一:
df3[["Upper Limit", "Forecasted value", 'Lower limit']] = (df3[["Upper Limit", "Forecasted value", 'Lower limit']].multiply(df3["Percentage"], axis="index")/100).round(1)
df3
我是 python 的新手,所以这可能是一个愚蠢而简单的问题。
我有两个数据框,第一个数据框有一个百分比列,需要应用于 Dataframe2 中的 A、B、C 列。有什么建议吗?
数据框 1
区域百分比
南方 34.4%
北 27.0%
西部 21.2%
东部 14.8%
其他 2.6%
数据框 2 周结束上限预测值下限状态预测日期
22/05/2022 2112.2 2316.4 2525.9 CA 30/05/2022
29/05/2022 2123.8 2331.1 2523.4 CA 30/05/2022
5/06/2022 2136.5 2340.5 2553.8 CA 30/05/2022
12/06/2022 2148.466667 2353.433333 2562.266667 CA 30/05/2022
19/06/2022 2160.616667 2365.483333 2576.216667 CA 30/05/2022
26/06/2022 2172.766667 2377.533333 2590.166667 CA 30/05/2022
所需数据框
区域周结束上限预测值下限状态预测日期
南 22/05/2022 726.6 796.8 868.9 CA 30/05/2022
北 22/05/2022 570.3 625.4 682.0 CA 30/05/2022
西部 22/05/2022 447.8 491.1 535.5 CA 30/05/2022
东部 22/05/2022 312.6 342.8 373.8 CA 30/05/2022
其他 22/05/2022 54.9 60.2 65.7 CA 30/05/2022
南 29/05/2022 730.6 801.9 868.0 CA 30/05/2022
北 29/05/2022 573.4 629.4 681.3 CA 30/05/2022
西部 29/05/2022 450.2 494.2 535.0 CA 30/05/2022
东部 29/05/2022 314.3 345.0 373.5 CA 30/05/2022
其他 29/05/2022 55.2 60.6 65.6 CA 30/05/2022
南 5/06/2022 735.0 805.1 878.5 CA 30/05/2022
北 5/06/2022 576.9 631.9 689.5 CA 30/05/2022
西部 5/06/2022 452.9 496.2 541.4 CA 30/05/2022
东部 5/06/2022 316.2 346.4 378.0 CA 30/05/2022
其他 5/06/2022 55.5 60.9 66.4 CA 30/05/2022
请在下面的 excel 图片中找到,希望上面带有 excel 图片的数据会更有意义。如果他们允许的话,我很乐意附上 excel。在此先感谢您的帮助。
enter image description here
1. 因为我们没有公共键(列),所以我们不能合并它们,所以技巧是使两个 DF 大小相同。
1.1 使 df1 到 30 行,重复相同的行块:
df1 = pd.concat([df1]*6, ignore_index=True)
1.2 使 df2 到 30 行重复 index
这次:
df2 = df2.loc[df2.index.repeat(5)].reset_index(drop=True)
2. 现在我们有 2 个相同大小的 dfs (length),我们可以 concat()
它们:
df3 = pd.concat([df1, df2], axis=1)
3. 现在是时候将 3 列乘以“百分比”(我已经删除了 "%" 使它更容易) 一:
df3[["Upper Limit", "Forecasted value", 'Lower limit']] = (df3[["Upper Limit", "Forecasted value", 'Lower limit']].multiply(df3["Percentage"], axis="index")/100).round(1)
df3