Python 将日期序列分配给分组
我在pandas中有一个数据框,其中包含shops和item ID列。我想给每对夫妇(商店、商品id)分配一个月的数据范围。例如,如果商店被称为“玩具”,而商品id为“球”,那么我有这样的东西:Python 将日期序列分配给分组,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我在pandas中有一个数据框,其中包含shops和item ID列。我想给每对夫妇(商店、商品id)分配一个月的数据范围。例如,如果商店被称为“玩具”,而商品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
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
我想要这样的东西:
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
我怎样才能用熊猫做到这一点
df
shop item_id
0 Toy ball
1 Toy book
及
首先,按天数重复每个数据帧行
df = pd.DataFrame(df.values.repeat(n, axis=0), columns=df.columns)
现在,让我们使用groupby
、cumcount
和一些带有pd.DateOffset
的timedelta算法:
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
谢谢!这正是我想要的。你真棒。