有人能帮我在Python上创建SUMIFS函数等价物吗?

2024-09-30 04:38:38 发布

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

上周我基本上学会了Python,虽然我目前正在学习基础知识,但我的任务是在工作中用Python构建一个小程序。希望能帮上忙。 我想创建一个类似于excel版本的SUMIFS函数。我的数据包含现金流日期(CFDATE)、投资组合名称(portfolio)和现金流金额(CF)。我想根据它所属的投资组合和下跌的日期来计算现金流量的总和。 我使用下面的代码成功地实现了这一点,但是我很难将结果输出为一个数组/表,其中标题行包含所有的公文包,并且初始列是一个日期列表(删除重复项),并且CF根据每个组合(CFDATE,PORTFOLIO)分组。在

例如所需输出: A-'B'组合'C' C日期

2017年9月30日300 600 300 2017年10月31日300 0 600

目前使用的代码:

from pandas import Series,DataFrame
from numpy import matrix
import numpy as np
import pandas as pd

df = DataFrame(pd.read_csv("...\Test.csv"))
portfolioMapping = sorted(list(set(df.PORTFOLIO)))
cfDateMapping = list(set(df.CFDATE))


for i in range(0,len(portfolioMapping)):
    dfVar = df.CF * np.where(df.PORTFOLIO == portfolioMapping[i] , 1, 0)
    for j in range(0,len(cfDateMapping)):
        dfVar1 = df.CF/df.CF * np.where(df.CFDATE == cfDateMapping[j] , 1, 0)
        print([portfolioMapping[i],[cfDateMapping[j]],sum(dfVar*dfVar1)])

数据基本上是这样的:

^{pr2}$

在这件事上我真的很感激你的帮助。在


Tags: 数据代码fromimportnumpydataframepandasdf
3条回答

您需要^{}+sum+^{}

^{1}$

^{}

^{pr2}$

我认为在您的情况下,最好使用groupby方法,如下所示:

^{1}$

基本上,一旦你把你的dataframedf分组,你就可以对它执行各种方法(比如sum()mean()min()max(),等等)

此外,您可以将分组的数据帧存储在如下对象中:

^{pr2}$

它使以后执行不同的计算更加灵活:

grouped.sum()
grouped.mean()
grouped.count()

你可以简单地用熊猫的^{}

^{1}$

结果如下:

^{pr2}$

相关问题 更多 >

    热门问题