我有一个具有以下结构的 df:
my_df
date hour product
2019-06-06 17 laptopt
2019-06-06 15 printer
2019-06-07 14 laptopt
2019-06-07 17 desktop
我怎样才能得到这样的 df:
hour laptop printer desktop
14 1 0 0
15 0 1 0
16 0 0 0
17 1 0 1
到目前为止,我一直在尝试执行 my_df.groupby(["product","hour"]).count().unstack(level=0)
date
product desktop laptop printer
hour
14 NaN 1.0 NaN
15 NaN NaN 1.0
17 1.0 1.0 NaN
我被困在那里了。
谢谢。
请您参考如下方法:
调用您已经unstacked 的内容并执行此操作:
index = pd.RangeIndex(df.hour.min(),df.hour.max() + 1)
unstacked.reindex(index).fillna(0).astype(int)
