use*_*569 3 python group-by dataframe pandas
嗨希望得到一些帮助,我有两列Dataframe df作为;
Source ID
1 2
2 3
1 2
1 2
1 3
3 1
Run Code Online (Sandbox Code Playgroud)
我的目的是对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
Run Code Online (Sandbox Code Playgroud)
我已经到了;
df.groupby('Source ID')['ID'].sum()
Run Code Online (Sandbox Code Playgroud)
得到总数,ID但我不知道下一步去哪里.
试试这个:
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
Run Code Online (Sandbox Code Playgroud)
如果你需要它作为一个新的持久性列,你可以像@jezrael在评论中提出的那样做:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |