我上周基本上选择了Python,尽管我目前正在学习基础知识,但我一直致力于在工作中使用python构建一个小程序。并希望得到这方面的帮助。 我想创建一个类似于excel版本的SUMIFS函数。我的数据包含现金流量日期(CFDATE),投资组合名称(PORTFOLIO)和现金流量(CF)。我想根据它属于哪个投资组合并根据投资组合的日期来总结CF。 我已经设法使用下面的代码来实现这一点,但是我努力的将结果输出为数组/表格,其中标题行包含所有投资组合,并且最初的列是日期列表(已删除重复项)和CF根据(CFDATE,PORTFOLIO)的每种组合进行分组。有人可以帮助我在Python上创建等效的SUMIFS函数吗?
例如期望的输出的: PORTFOLIO-> 'A' 'B' 'C' CFDATE
'30/09/2017' 300 600 300 '31/10/2017' 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)])
的数据基本上是在这种形式:
PORTFOLIO CFDATE CF
A 30/09/2017 300
A 31/10/2017 300
C 31/10/2017 300
B 30/09/2017 300
B 30/09/2017 300
C 30/09/2017 300
C 31/10/2017 300
C 31/10/2017 300
我真的很感谢在这个问题上的一些帮助。
非常感谢你的帮助的家伙,这个网站是要让我的学习体验,更愉快。 – KatZab