我想创建一个新的列(Group ID),基于以下条件:如果DOB和Name的前三个字母相同,则它必须是相同的Group ID。
<表类>
名称
捐助
组ID
tbody><<tr>安妮 18-01-1922 0 安妮斯科特 01-01-1950 1 安妮01-01-1950 1 大卫14-02-1950 2 David Kern15-02-1951 3 威廉·佩里 15-02-1953 4 Kenneth字段 15-02-1953 5 表类>
在列表中添加多个列,同时也为正确排序sort=False
:
df['Group ID Name'] = df.groupby(['DOB',df['Name'].str[:3]], sort=False).ngroup()
print (df)
Name DOB Group;ID Group ID Name
0 Anny 18-01-1922 0 0
1 Anny Scott 01-01-1950 1 1
2 Annie 01-01-1950 1 1
3 David 14-02-1950 2 2
4 David Kern 15-02-1951 3 3
5 William erry 15-02-1953 4 4
6 Kenneth Field 15-02-1953 5 5