如何根据贷款水平数据生成同期贷款清单?

时间:2017-08-25 00:05:47

标签: pandas reshape data-analysis

我正在尝试检测贷款级别数据集中的多次借用,如下所示:

d = {'start_month': [1,2,4,1,14],
'customer': ['A','A','A','C','C'],
'branch': [1,2,3,2,1],
'maturity_month': [13,14,16,13,26]} 
df = pd.DataFrame(data=d)

我想将这些数据重新整理到一个月/分支面板中,该面板为每个分支i指示分支j当前也与分支i一起借给同一客户。 对于分支i,在某个月借给与分支j相同的客户被定义为maturity_month_i> = maturity_month_j> start_month_i

d2 = {'start_month': [1,1,2,4,14],
 'branch': [1,2,2,3,1],
 'contemp_branch1':[0,0,1,1,0],
 'contemp_branch2':[0,0,0,1,0],
 'contemp_branch3':[0,0,0,0,0]}
df2 = pd.DataFrame(data=d2)

Desired output

我假设我需要(i)生成一个长数据集,对于每笔贷款,列出所有同期贷款及其各自的分支,然后(ii)重塑。我主要与(i)斗争,特别是因为我的数据集非常大,我需要一个有效的解决方案。

非常感谢!

1 个答案:

答案 0 :(得分:0)

让我们使用get_dummiesadd_prefixassign

df[['branch','start_month']].assign(**df.branch.astype(str).str.get_dummies()
                                        .add_prefix('contemp_branch'))

输出:

   branch  start_month  contemp_branch1  contemp_branch2  contemp_branch3
0       1            1                1                0                0
1       2            2                0                1                0
2       3            4                0                0                1
3       2            1                0                1                0
4       1           14                1                0                0