pandas将行值除以其他单元格

时间:2016-09-08 09:59:21

标签: python pandas dataframe group-by

您希望得到一些帮助,我有两列Dataframe df;

Source ID
1      2
2      3
1      2
1      2
1      3
3      1

我的目的是对Source进行分组,并根据分组的Source将ID单元格除以总计,并将其附加到orginial数据框,以便新列看起来像;

   Source ID  ID_new
    1      2  2/9
    2      3  3/3
    1      2  2/9
    1      2  2/9
    1      3  3/9
    3      1  3/1

我已经到了;

df.groupby('Source ID')['ID'].sum()

获取ID的总数,但我不知道下一步该去哪里。

1 个答案:

答案 0 :(得分:6)

试试这个:

In [79]: df.assign(ID_new=df.ID/df.groupby('Source').ID.transform('sum'))
Out[79]:
   Source  ID    ID_new
0       1   2  0.222222
1       2   3  1.000000
2       1   2  0.222222
3       1   2  0.222222
4       1   3  0.333333
5       3   1  1.000000

如果你需要它作为一个新的持久性列,你可以像@jezrael在comment中提出的那样:

In [81]: df['ID_new'] = df.ID/df.groupby('Source').ID.transform('sum')

In [82]: df
Out[82]:
   Source  ID    ID_new
0       1   2  0.222222
1       2   3  1.000000
2       1   2  0.222222
3       1   2  0.222222
4       1   3  0.333333
5       3   1  1.000000