将日期序列分配给大熊猫分组

时间:2018-12-15 14:08:33

标签: python pandas datetime dataframe

我在熊猫店里有一个数据框,上面有商店和商品ID列。我想为每个夫妻(shop,item_id)分配一个月的数据范围。例如,如果商店被称为“玩具”,item_id为“球”,那么我会有这样的东西:

  shop item_id
0  Toy    ball
1  Toy    book

我想要这样的东西:

  shop item_id      date
0  Toy    ball  1-1-2015
1  Toy    ball  1-2-2015
2  Toy    ball  1-3-2015
3  Toy    ball  1-4-2015
4  Toy    book  1-1-2015
5  Toy    book  1-2-2015
6  Toy    book  1-3-2015
7  Toy    book  1-4-2015

我如何用熊猫来做到这一点?

1 个答案:

答案 0 :(得分:2)

给出

df    
  shop item_id
0  Toy    ball
1  Toy    book

还有

n = 5 # Number of days.

首先将每个DataFrame行重复天数。

df = pd.DataFrame(df.values.repeat(n, axis=0), columns=df.columns)

现在,让我们将groupbycumcount和一些timedelta算法与pd.DateOffset一起使用:

days = pd.Series([
    pd.DateOffset(days=x) for x in df.groupby(['shop', 'item_id']).cumcount()
])
df['date'] = days + pd.to_datetime('2015-1-1')
print(df)

  shop item_id       date
0  Toy    ball 2015-01-01
1  Toy    ball 2015-01-02
2  Toy    ball 2015-01-03
3  Toy    ball 2015-01-04
4  Toy    ball 2015-01-05
5  Toy    book 2015-01-01
6  Toy    book 2015-01-02
7  Toy    book 2015-01-03
8  Toy    book 2015-01-04
9  Toy    book 2015-01-05