【问题标题】:Assigning date sequences to pandas groupby groups将日期序列分配给 pandas groupby 组
【发布时间】:2018-12-15 14:08:32
【问题描述】:

我在 pandas 中有一个带有商店和商品 ID 列的数据框。我想为每对夫妇(商店,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

如何使用 pandas 实现这一目标?

【问题讨论】:

    标签: python pandas datetime dataframe


    【解决方案1】:

    给定

    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)
    

    现在,让我们使用groupbycumcountpd.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
    

    【讨论】:

    • 非常感谢!这正是我想要的。你太棒了。
    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多