对来自两个数据框的行求和



我有两个数据框架。一个有月份1-5和每个月的值,每个ID都是相同的,另一个有ID和唯一的乘数,例如:

data = [['m', 10], ['a', 15], ['c', 14]]

# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['ID', 'Unique'])
data2=[[1,0.2],[2,0.3],[3,0.01],[4,0.5],[5,0.04]]
df2 = pd.DataFrame(data2, columns=['Month', 'Value'])

我想做sum (value/(1+unique)^(Month/12))例如,对于ID m,我想对df2中的每一行做(value/(1+10)^(Month/12)),并对它们求和。我写了一个for循环来做到这一点,但由于我的真实表有277,000个条目,这需要太长时间!

df['baseTotal']=0
for i in df.index.unique():
for i in df2.Month.unique():
df['base']= df2['Value']/pow(1+df.loc[i,'Unique'],df2['Month']/12.0)
df['baseTotal']=df['baseTotal']+df['base']

有更有效的方法吗?

df['Unique'].apply(lambda x: (df2['Value']/((1+x) ** (df2['Month']/12))).sum())

0    0.609983
1    0.563753
2    0.571392
Name: Unique, dtype: float64

最新更新