我有一个表格,其中包含日期和每个日期售出的各种汽车,格式如下(这些仅是许多列中的2个):
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
我执行以下操作来查找每天售出的宝马汽车数量
df[df.CAR=='BMW']['DATE'].value_counts()
结果是这样的:
2012/07/04 15 2012/07/08 8 ... 2012/01/02 1
但是有几天没有宝马汽车售出。结果,除了上述内容之外,我还希望BMW零发生的日子。因此,理想的结果是:
2012/07/04 15 2012/07/08 8 ... 2012/01/02 1 2012/01/09 0 2012/08/11 0
我该怎么做才能获得这样的结果?
您可以在之后重新索引结果,value_counts并用0填充缺失的值。
value_counts
df.loc[df.CAR == 'BMW', 'DATE'].value_counts().reindex( df.DATE.unique(), fill_value=0)
输出:
2012/01/01 2 2012/01/02 1 2012/01/03 0 2012/09/01 1 2012/09/02 0 Name: DATE, dtype: int64
取而代之的是,value_counts您还可以考虑检查相等性和总和,并按日期分组,其中包括所有日期。
df['CAR'].eq('BMW').astype(int).groupby(df['DATE']).sum()
DATE 2012/01/01 2 2012/01/02 1 2012/01/03 0 2012/09/01 1 2012/09/02 0 Name: CAR, dtype: int32