這是表明一個人是否擁有可資本化和不可資本化合同的資料。我想讓它按名稱分組并創建一個新列,告訴我他/她是否同時擁有合同以及所有合同的總和。(這是一個相當大的)
| ID | 姓名 | 大寫 | 合同數量 |
|---|---|---|---|
| 1 | 吉米 | 是的 | 3 |
| 1 | 吉米 | 不 | 1 |
| 2 | 珍妮 | 不 | 7 |
| 3 | 艾麗 | 是的 | 5 |
| 4 | 丹尼 | 是的 | 2 |
| 5 | 查爾斯 | 是的 | 1 |
| 6 | 弗雷迪 | 不 | 3 |
| 7 | 艾麗 | 是的 | 5 |
| 7 | 艾麗 | 不 | 3 |
最終結果將如下所示:
| ID | 姓名 | 大寫_x | 合同數量 |
|---|---|---|---|
| 1 | 吉米 | 兩個都 | 4 |
| 2 | 珍妮 | 不 | 7 |
| 3 | 艾麗 | 是的 | 5 |
| 4 | 丹尼 | 是的 | 2 |
| 5 | 查爾斯 | 是的 | 1 |
| 6 | 弗雷迪 | 不 | 3 |
| 7 | 艾麗 | 兩個都 | 8 |
我真的被這個問題困住了。
uj5u.com熱心網友回復:
使用聚合:
(df.groupby('id').agg({'Capitalization': lambda s: 'both' if len(set(s))==2 else s,
'number of contracts': 'sum',
'name': 'first'}))
在這里,我假設唯一可能的值Capitalization是"yes"or "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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/491330.html
