我有一个看起来像这样的数据框:
ID Product Time
C561 PX 2017-01-01
00:00:00
T801 PT 2017-01-01
00:00:01
我已经使用以下代码将时间格式转换为几个月,以便更好地处理:
df['Time'] = df['Time'].dt.to_period("M")
然后,我想计算每月特定产品的ID数量,并编写以下代码:
df=df.groupby(['Time','Product'])['ID'].size().reset_index()
这导致了这样的数据帧:
Time Product ID
01-2017 PX 2
02-2017 PX 3
02-2017 PT 2
我现在要添加的是特定月份中没有任何ID的产品行。所以我想为此添加0,例如:
Time Product ID
01-2017 PX 2
01-2017 PT 0
02-2017 PX 3
02-2017 PT 2
我怎么做?
您可以使用unstack
并用填充零fill_value=0
,之后您可以stack
再次使用
df = df.groupby(['Time','Product'])['ID'].count().unstack(fill_value=0).stack()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句