我正在嘗試將值匯總和計數。下面你可以看到我的資料集
data = {'id':['1','2','3','4','5'],
'name': ['Company1', 'Company1', 'Company3', 'Company3', 'Company5'],
'sales': [10, 3, 5, 1, 0],
'income': [10, 3, 5, 1, 0],
}
df = pd.DataFrame(data, columns = ['id','name', 'sales','income'])
conditions = [
(df['sales'] < 1),
(df['sales'] >= 1) & (df['sales'] < 3),
(df['sales'] >= 3) & (df['sales'] < 5),
(df['sales'] >= 5)
]
values = ['<1', '1-3', '3-5', '>= 5']
df['range'] = np.select(conditions, values)
df=df.groupby('range')['sales','income'].agg(['count','sum']).reset_index()
這段代碼給了我下一張桌子

但我對這張表的外觀不滿意,因為“計數”重復了兩次。所以任何人都可以幫助我使用這張表,以便有單獨的列“范圍”、“計數”、“收入”和“銷售額”。
uj5u.com熱心網友回復:
您可以嘗試命名聚合:
df.groupby('range', as_index=False).agg(count=('range','count'), sales=('sales','sum'), income=('income','sum'))
輸出:
range count sales income
0 1-3 1 1 1
1 3-5 1 3 3
2 <1 1 0 0
3 >= 5 2 15 15
PS您可能希望將“范圍”設為分類變數,以便以正確的順序對輸出進行排序:
df['range'] = pd.Categorical(np.select(conditions, values), categories=values, ordered=True)
然后上面的代碼輸出:
range count sales income
0 <1 1 0 0
1 1-3 1 1 1
2 3-5 1 3 3
3 >= 5 2 15 15
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427579.html
標籤:Python 熊猫 数据框 熊猫-groupby
上一篇:為什么我的資料框的條件不起作用?
