逗人,
请帮助我,我被困了。我想这应该不难,但我感到不知所措。
需要对应收账款进行老化,因此必须将它们分成不同的桶。
假设我们只有3个组:当前,以上_ 10天和以上_ 20天以及下表:
d = {'Cust': [Dfg, Ers, Dac, Vds, Mhf, Kld, Xsd, Hun],
'Amount': [10000, 100000, 4000, 5411, 756000, 524058, 4444785, 54788,
'Days': 150, 21, 30, 231, 48, 15, -4, -14 }
我需要将金额分组为总金额,具体取决于Aging组。 例: 当前:4499573等。
为此目的,我试图用这样的代码对应收款进行分组:
above_10Days = df.groupby((df['Days'] > 0) & (df['Days'] <= 10))
above10sum = above_10Days.Amount.sum().iloc[1]
它完美但只有当它们是这个组中的实际数量时才有效。 当它们不是这样的A / R时,它会抛出异常并停止执行。我尝试使用功能或制作“无”#39;值为0,但没有成功。
希望有人能够知道解决方案。
提前致谢
答案 0 :(得分:0)
IIUC:
d = {'Cust': ['Dfg', 'Ers', 'Dac', 'Vds', 'Mhf', 'Kld', 'Xsd', 'Hun'],
'Amount': [10000, 100000, 4000, 5411, 756000, 524058, 4444785, 54788],
'Days': [150, 21, 30, 231, 48, 15, -4, -14] }
df = pd.DataFrame(d)
#Updated to assign to output dataframe
df_out = (df.groupby(pd.cut(df.Days,
[-np.inf,10,20,np.inf],
labels=['Current','Above 10 Days','Above 20 Days']))['Amount']
.sum())
输出:
Days
Current 4499573
Above 10 Days 524058
Above 20 Days 875411
Name: Amount, dtype: int64
使用.loc
的可变受让人:
varCurrent = df_out.loc['Current']
var10 = df_out.loc['Above 10 Days']
var20 = df_out.loc['Above 20 Days']
print(varCurrent,var10,var20)
输出:
4499573 524058 875411