使用 Pandas 数据框进行 Python 计算

标签 python python-3.x pandas dataframe

我是 python 新手。我正在尝试通过以下示例学习 Pandas 。 我在下面有两个数据框。

第一个是,

CCP_DETAILS_SID BASE_LINE
    1            1235.89
    2            369.32
    3            9863.1

第二个是,

CCP_DETAILS_SID PERIOD_SID  GROWTH
1                  601       0.1
1                  602       0.2
1                  603       0.3
2                  601       0.1
2                  602       0.2
2                  603       0.3
3                  601       0.1
3                  602       0.2
3                  603       0.3

通过合并以上两个,我试图计算一个名为“PROJECTION_SALES”的字段。我在下面列出的字段的公式和示例。

Projection_Sales=(Base_Line)*(1+Growth) 两个数据帧之间的合并或连接条件是 CCP_DETAILS_SID。

示例

    Projection_Sales(ccp_details_sid=1 and period_sid=601)=1235.89*(1+0.1)

    Projection_Sales(ccp_details_sid=1 and period_sid=602)=1235.89*(1+0.1)*(1+0.2)

    Projection_Sales(ccp_details_sid=1 and period_sid=603)=1235.89*(1+0.1)*(1+0.2)*(1+0.3)

    Projection_Sales(ccp_details_sid=2 and period_sid=601)=369.32*(1+0.1).

相同的计算方式适用于数据框中的其他行。我在下面列出了示例输出。

CCP_DETAILS_SID PERIOD_SID  PROJECTION_SALES
1                 601        1359.479
1                 602        1631.3748
1                 603        2120.78724
2                 601        406.252
2                 602        487.5024
2                 603        633.75312
3                 601        10849.41
3                 602        13019.292
3                 603        16925.0796

我试过下面的方法

pd.merge(first,second,how='inner',on='CCP_DETAILS_SID')

完成此步骤后,我需要使用 cumprod 扩展代码.因为您可以观察到上面的示例具有累积乘积逻辑等。

你们能给我建议一种方法来完成这个计算吗?

最佳答案

这是你想要的吗?

In [145]: t = d1.merge(d2)

In [146]: (t.assign(x=t.assign(x=t.GROWTH+1)
                       .groupby('CCP_DETAILS_SID')['x']
                       .cumprod())
            .eval("Projection_Sales = BASE_LINE * x")
            .drop('x',1))
Out[146]:
   CCP_DETAILS_SID  BASE_LINE  PERIOD_SID  GROWTH  Projection_Sales
0                1    1235.89         601     0.1        1359.47900
1                1    1235.89         602     0.2        1631.37480
2                1    1235.89         603     0.3        2120.78724
3                2     369.32         601     0.1         406.25200
4                2     369.32         602     0.2         487.50240
5                2     369.32         603     0.3         633.75312
6                3    9863.10         601     0.1       10849.41000
7                3    9863.10         602     0.2       13019.29200
8                3    9863.10         603     0.3       16925.07960

关于使用 Pandas 数据框进行 Python 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319384/

相关文章:

python - 通过 save_objects api 导出导入 Kibana [7.4] 对象

python - 将 Pandas 与 Spark 结合使用

python - 没有 GTK 的 GDK 事件处理

python - 正常列表 'type' 对象不可订阅

python - 基本的 BeautifulSoup 维基百科抓取

用于打开 GTK 窗口/对话框并从中获取一些值的 Python 函数

python - 在 matplotlib 中更改字体

python - 我的推文的转发

python - 如何在保持 Dataframe 结构的同时计算 %

python - 混合数字和文本字段的 Pivot Pandas 数据框