如何获取cols和rows来自另一个数据框的列值的数据框?

时间:2019-06-15 00:41:02

标签: python pandas dataframe

我有一个具有以下结构的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

我被困在那里。

谢谢。

3 个答案:

答案 0 :(得分:2)

致电unstacked,然后执行以下操作:

index = pd.RangeIndex(df.hour.min(),df.hour.max() + 1)
unstacked.reindex(index).fillna(0).astype(int)

答案 1 :(得分:2)

您可以使用<div ng-app="app"> <div ng-controller="c1"> c1: {{response.origin}} </div> <div ng-controller="c2"> c2: {{response.origin}}<br> <input width="200" ng-model="response.origin" style="width: 300px;" /><br> </div> </div> pd.crosstab

reindex

答案 2 :(得分:2)

IIUC

df.set_index('hour')['product'].str.get_dummies().sum(level=0).reindex(range(df.hour.min(),df.hour.max()+1),fill_value=0)
Out[15]: 
      desktop  laptopt  printer
hour                           
14          0        1        0
15          0        0        1
16          0        0        0
17          1        1        0