【问题标题】:How to add a column containing sequential counts based on the order of another column?如何根据另一列的顺序添加包含顺序计数的列?
【发布时间】:2021-10-02 21:09:58
【问题描述】:

我有一个如下的数据框:

data = [["Item_1", '2020-06-01'], ["Item_1", "2021-05-01"], ["Item_1", '2019-02-10'],
       ["Item_2", '2020-04-01'], ["Item_2", "2018-05-01"]]

df = pd.DataFrame(data, columns=["Item_ID", "Dates"])
Item ID   Dates
Item_1    2020-06-01
Item_1    2020-05-01
Item_1    2019-02-10
Item_2    2020-04-01
Item_2    2018-05-01

我希望添加一个包含基于日期顺序的计数的列。因此该表如下所示,其中Dates 列被重新排序,而计数列反映了Item ID 的日期顺序:

Item ID   Dates       Count
Item_1    2019-02-10    1
Item_1    2020-05-01    2
Item_1    2020-06-01    3
Item_2    2016-02-10    1
Item_2    2018-05-01    2

是否有不依赖groupby 操作的方法来执行此操作,以便使用此新列更新原始数据框?

【问题讨论】:

  • 1.你对 groupby 有什么看法? 2.count应该代表什么?
  • 我想我并不反对 groupby,我更希望将此列添加到原始数据框中,但实际上我认为按照我的意图,groupby 会很好。 count 代表订单 - 所以 1 表示它是与商品关联的第一个日期,依此类推。

标签: python pandas group-by


【解决方案1】:

试试

df = df.sort_values(['Item ID','Dates'])
df['int'] = df.groupby('Item ID').cumcount()+1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2011-12-01
    • 2020-12-28
    • 2015-02-27
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多