Pandas- adding missing dates to DataFrame while keeping column/index values?

后端 未结 4 1698
谎友^
谎友^ 2021-01-22 16:23

I have a pandas dataframe that incorporates dates, customers, items, and then dollar value for purchases.

   date     customer   product   amt  
 1/1/2017   tim         


        
4条回答
  •  无人共我
    2021-01-22 16:47

    Notice ,this using the stack and unstack couple of times

    df.set_index(['date','customer','product']).amt.unstack(-3).\
      reindex(columns=pd.date_range(df['date'].min(), 
        df['date'].max()),fill_value=0).\
          stack(dropna=False).unstack().stack(dropna=False).\
            unstack('customer').stack(dropna=False).reset_index().\
              fillna(0).sort_values(['level_1','customer','product'])
    Out[314]: 
       product    level_1 customer    0
    0    apple 2017-01-01      jim  0.0
    12   melon 2017-01-01      jim  2.0
    24  orange 2017-01-01      jim  0.0
    1    apple 2017-01-01      tim  3.0
    13   melon 2017-01-01      tim  0.0
    25  orange 2017-01-01      tim  0.0
    2    apple 2017-01-01      tom  5.0
    14   melon 2017-01-01      tom  4.0
    26  orange 2017-01-01      tom  0.0
    3    apple 2017-01-02      jim  0.0
    15   melon 2017-01-02      jim  0.0
    27  orange 2017-01-02      jim  0.0
    4    apple 2017-01-02      tim  0.0
    16   melon 2017-01-02      tim  0.0
    28  orange 2017-01-02      tim  0.0
    5    apple 2017-01-02      tom  0.0
    17   melon 2017-01-02      tom  0.0
    29  orange 2017-01-02      tom  0.0
    6    apple 2017-01-03      jim  0.0
    18   melon 2017-01-03      jim  0.0
    30  orange 2017-01-03      jim  0.0
    7    apple 2017-01-03      tim  0.0
    19   melon 2017-01-03      tim  0.0
    31  orange 2017-01-03      tim  0.0
    8    apple 2017-01-03      tom  0.0
    20   melon 2017-01-03      tom  0.0
    32  orange 2017-01-03      tom  0.0
    9    apple 2017-01-04      jim  2.0
    21   melon 2017-01-04      jim  0.0
    33  orange 2017-01-04      jim  0.0
    10   apple 2017-01-04      tim  0.0
    22   melon 2017-01-04      tim  3.0
    34  orange 2017-01-04      tim  0.0
    11   apple 2017-01-04      tom  0.0
    23   melon 2017-01-04      tom  1.0
    35  orange 2017-01-04      tom  4.0
    

提交回复
热议问题