我有一個由一年中的虛擬汽車購買組成的資料框,如下所示:
df =
purchase_date brand
2021-02-13 BMW
2021-02-28 BMW
2021-03-10 Audi
2021-03-11 BMW
...
我正在尋找的是在 2021 年每個月獲得每個品牌汽車的總數量,所以它看起來像這樣:
df =
BMW Audi
(2021-02) 2 0
(2021-03) 1 1
...
到目前為止,我已經使用此代碼按年、月分組,但我無法將其拆分以計算單個品牌:
df = df.groupby([df['purchase_date'].dt.year.rename('year'), df3['purchase_date'].dt.month.rename('month')]).agg({'count'})
這將回傳:
('brand','count')
(2021-02) 2
(2021-03) 2
uj5u.com熱心網友回復:
crosstab與月份周期一起使用:
df1 = pd.crosstab(df['purchase_date'].dt.to_period('m').rename('year'), df['brand'])
print (df1)
brand Audi BMW
year
2021-02 0 2
2021-03 1 1
您的解決方案是添加列brand、聚合GroupBy.size和Series.unstack:
df2 = (df.groupby([df['purchase_date'].dt.year.rename('year'),
df['purchase_date'].dt.month.rename('month'), 'brand'])
.size()
.unstack(fill_value=0))
print (df2)
brand Audi BMW
year month
2021 2 0 2
3 1 1
選擇:
df3 = (df.groupby([pd.Grouper(freq='MS',key='purchase_date'), 'brand'])
.size()
.unstack(fill_value=0))
print (df3)
brand Audi BMW
purchase_date
2021-02-01 0 2
2021-03-01 1 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455783.html
下一篇:在R中構建JSON資料
