使用PANDAS中的value_counts()出现零次/频率

Sid*_*oti 9 python numpy pandas

我有一个表格,其中包含以下格式在每个日期销售的日期和各种汽车(这些只是许多列中的两个):

DATE       CAR
2012/01/01 BMW
2012/01/01 Mercedes Benz
2012/01/01 BMW
2012/01/02 Volvo
2012/01/02 BMW
2012/01/03 Mercedes Benz
...
2012/09/01 BMW
2012/09/02 Volvo
Run Code Online (Sandbox Code Playgroud)

我执行以下操作以查找每天销售的BMW汽车数量

df[df.CAR=='BMW']['DATE'].value_counts()
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

2012/07/04 15
2012/07/08 8
...
2012/01/02 1
Run Code Online (Sandbox Code Playgroud)

但有些日子里没有宝马车出售.结果,与上面一起,我想要宝马零出现的日子.因此,期望的结果是:

2012/07/04 15
2012/07/08 8
...
2012/01/02 1
2012/01/09 0
2012/08/11 0
Run Code Online (Sandbox Code Playgroud)

我能做些什么才能达到这样的效果?

ALo*_*llz 8

您可以在之后重新索引结果,value_counts并使用0填充缺失值.

df.loc[df.CAR == 'BMW', 'DATE'].value_counts().reindex(
    df.DATE.unique(), fill_value=0)
Run Code Online (Sandbox Code Playgroud)

输出:

2012/01/01    2
2012/01/02    1
2012/01/03    0
2012/09/01    1
2012/09/02    0
Name: DATE, dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 更好`.reindex(df.DATE.unique(),fill_value = 0)` (4认同)