我有一个按类别功能分组的DataFrame。 例如,我有df
df[['APP_NO', 'REPAY_METHOD', 'RESIDUAL_DEBT']] \
.groupby(['APP_NO', 'REPAY_METHOD']).agg({'RESIDUAL_DEBT' : 'sum'})
ID NUM CAT_FEAT aggr
1 123 2 1233
2 234 2 6631
3 576 -1 -491
4 987 0 5461
NUM是唯一标识符
因此,我想获得以下daraframe:
ID NUM CAT_FEAT aggr_CF2 aggr_CF0 aggr_CFm1
1 123 2 1233 -1 -1
2 234 2 6631 -1 -1
3 576 -1 -1 -1 -491
4 987 0 -1 5461 -1
也就是说,对于每个NUM,获取具有所有CAT_FEAT值的aggr标签
如果NUM没有CAT_FEAT的任何值,则将其替换为-1
问题是如何最正确地实现这一目标。当前df已按NUM分组。我有一个DataFrame,没有分组。也许我最初的想法不正确。
答案 0 :(得分:0)
这只是一个例子。这是真实的数据:
ID. APP_NO REPAY_METHOD RESIDUAL_DEBT
0 755356650 0.0 0.00
1 756347150 2.0 20490.53
2 756927070 -1.0 0.00
3 757031330 2.0 0.00
4 757233210 2.0 0.00
我想获得以下内容
ID. APP_NO RESIDUAL_DEBT_RM0 RESIDUAL_DEBT_RM2 RESIDUAL_DEBT_RMm1
0 755356650 0.0 -1 -1
1 756347150 -1 20490.53 -1
2 756927070 -1 -1 0
3 757031330 -1 0 -1
4 757233210 -1 0 -1
RESIDUAL_DEBT_RM0是REPAY_METHOD = 0 e.t.c的功能 对于具有所有REPAY_METHOD值的每个APP_NO功能 如果APP_NO没有来自REPAY_METHOD的任何值,则将其替换为-1
我有重复APP_NO的数据。主要任务是按APP_NO和每个分类特征对数据进行分组以形成聚合特征