如何使用两个单独的数据帧在Pandas中执行SumProduct()

2024-05-08 22:02:18 发布

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

目标:在pandas中使用可比较的SUMPRODUCT方法创建输出

说明:我需要使用两个数据帧(df和df\u 2\u copy)。我试图将1个月期、3个月期、6个月期的CDs分别乘以各自的df价格(200030005000)。你知道吗

import pandas as pd

data = [['1-mo CDs', 1.0, 1,2000, '1, 2, 3, 4, 5, and 6'],
        ['3-mo CDs', 4.0 ,3 ,3000,'1 and 4'],
        ['6-mo CDs',9.0 ,6, 5000,'1']]
df = pd.DataFrame(data,columns=['Scenario','Yield', 'Term','Price', 'Purchase CDs in months'])
df

data_2 = [['Init Cash', 400000, 325000,335000,355000,275000,225000,240000],
          ['Matur CDs',0,0,0,0,0,0,0],
          ['Interest',0,0,0,0,0,0,0],
          ['1-mo CDs',0,0,0,0,0,0,0],
          ['3-mo CDs',0,0,0,0,0,0,0],
          ['6-mo CDs',0,0,0,0,0,0,0],
          ['Cash Uses',75000,-10000,-20000,80000,50000,-15000,60000],
          ['End Cash', 0,0,0,0,0,0,0]]

# set table
df_2 = pd.DataFrame(data_2,columns=['Month', 'Month 1', 'Month 2', 'Month 3', 'Month 4', 'Month 5', 'Month 6', 'End'])
df_2_copy = df_2.copy()

最后,我想将SUMPRODUCT的输出放在df_2_copy.iloc[7]位置。你知道吗

任何帮助都将不胜感激。你知道吗


Tags: columnsand目标dataframepandasdfdatacash
1条回答
网友
1楼 · 发布于 2024-05-08 22:02:18

您可以按以下方式进行:

为具有的特定月份从df_2生成df3-值 列更改为索引,对于在df中有相应行的行:

df3 = df_2.drop(columns='End').set_index('Month')\
    .query('index in @df.Scenario')

对于我的测试数据,随着月n值的改变,它是:

          Month 1  Month 2  Month 3  Month 4  Month 5  Month 6
Month                                                         
1-mo CDs        1        2        0        2        2        0
3-mo CDs        1        0        3        0        4        0
6-mo CDs        1        1        0        2        0        0

然后生成df4-df,将场景更改为索引, 仅限于价格列,但仍作为数据帧:

df4 = df.set_index('Scenario').Price.to_frame()

结果是:

          Price
Scenario       
1-mo CDs   2000
3-mo CDs   3000
6-mo CDs   5000

然后计算总和:

sums = (df3.values * df4.values).sum(axis=0)

结果是:

[10000  9000  9000 14000 16000     0]

最后一步是将这些数字写入目标位置:

df_2.iloc[7, 1:7] = sums

相关问题 更多 >