这是指示单个人是否具有可大写和不可大写合同的数据。我想将其按名称分组,并创建一个新列,告诉我他/她是否同时拥有合同和所有合同的总和。(它相当大)
id | name | 大写字母 | 合同数量 | 1 | 吉米 | 对 | 3 | 1
---|---|---|---|
吉米 | 没有 | 1 | |
珍妮 | 没有 | 7 | |
3 | Elle | 对 | 5 |
丹尼 | 对 | 2 | |
查尔斯 | 对 | 1 | |
弗雷迪 | 没有 | 3 | |
Elle | 对 | 5 | |
Elle | 没有 | 3 |
使用聚合:
(df.groupby('id').agg({'Capitalization': lambda s: 'both' if len(set(s))==2 else s,
'number of contracts': 'sum',
'name': 'first'}))
在这里,我假设Capitalization
中唯一可能的值是"yes"
或"no"
。如果没有,请告诉我。
您可以随时更改lambda函数中的逻辑以适应更复杂的情况。
name Capitalization number of contracts
id
1 Jimmy both 4
2 Jenny no 7
3 Elle yes 5
4 Danny yes 2
5 Charles yes 1
6 Freddy no 3
7 Elle both 8