假設我有一個像這樣的資料框:
df = pd.DataFrame({
'COUNTRY_CODE': ['CO','CO','CO','BR','BR','BR'],
'VERTICAL_GROUP_ID': [2,2,3,2,3,3],
'SUB_VERTICAL': ['SUPER','SUPER','HOME','LICOR','SPORTS','HOME'],
'PRODUCT_ID': [1111,1111,1111,1111,1111,2222],
'SHOWN': [7,8,12,14,16,1],
})
我想進入另一個資料框,對于每個 COUNTRY_CODE/PRODUCT_ID 組合,每個 VERTICAL_GROUP 只有一行。
所以對于上面的df,我想得到這樣的東西:
| 國家代碼 | VERTICAL_GROUP_ID | SUB_VERTICAL | PRODUCT_ID | 顯示 |
|---|---|---|---|---|
| 一氧化碳 | 2 | 極好的 | 1111 | 7 |
| 一氧化碳 | 3 | 家 | 1111 | 12 |
| BR | 2 | LICOR | 1111 | 14 |
| BR | 3 | 運動的 | 1111 | 16 |
| BR | 3 | 家 | 2222 | 1 |
我保留每個 COUNTRY_CODE/PRODUCT_ID/VERTICAL_GROUP 組合的哪些行并不重要,只要每個 VERTICAL_GROUP 只得到 1 行。
這樣做的最佳方法是什么?我嘗試將 grouby("PRODUCT_ID") 與 drop_duplicates(subset=['VERTICAL_GROUP_ID']) 混合,但我一直在做錯事,因為我不斷收到類似的錯誤
AttributeError:“DataFrameGroupBy”物件沒有屬性“drop_duplicates”
uj5u.com熱心網友回復:
你可以試試:
df.groupby(['COUNTRY_CODE', 'VERTICAL_GROUP_ID', 'PRODUCT_ID']).agg('first').reset_index()
COUNTRY_CODE VERTICAL_GROUP_ID PRODUCT_ID SUB_VERTICAL SHOWN
0 BR 2 1111 LICOR 14
1 BR 3 1111 SPORTS 16
2 BR 3 2222 HOME 1
3 CO 2 1111 SUPER 7
4 CO 3 1111 HOME 12
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524023.html
標籤:Python熊猫
