【问题标题】:How do you find a date range for each price value?您如何找到每个价格值的日期范围?
【发布时间】:2020-10-22 21:46:05
【问题描述】:

我有一个数据框,其中包含 item_id、子类别、售出日期、售出数量及其当天的价格。 例如:

item_id subcategory1 subcategory2 日期 价格 数量 AB1342 sub1 sub2 2020-04-03 2.970 1 AB1342 sub1 sub2 2020-04-03 2.970 1 AB1342 sub1 sub2 2020-04-06 2.970 1 AB1342 sub1 sub2 2020-04-06 2.970 1 AB1342 sub1 sub2 2020-04-09 2.970 1 AB1342 sub1 sub2 2020-04-13 2.970 1 AB1342 sub1 sub2 2020-04-13 2.970 1 AB1342 sub1 sub2 2020-04-20 2.970 1 AB1342 sub1 sub2 2020-04-21 2.665 1 AB1342 sub1 sub2 2020-04-21 2.970 1 AB1342 sub1 sub2 2020-04-22 2.970 1 AB1342 sub1 sub2 2020-04-22 2.970 1 AB1342 sub1 sub2 2020-04-25 2.970 1 AB1342 sub1 sub2 2020-04-27 2.665 1 AB1342 sub1 sub2 2020-04-28 2.970 1

输出应该是

item_id subcategory1 subcategory2 price start_date end_date 数量 AB1342 sub1 sub2 2.970 2020-04-01 2020-04-20 8 AB1342 sub1 sub2 2.665 2020-04-21 2020-04-21 1 AB1342 sub1 sub2 2.970 2020-04-21 2020-04-21 1 AB1342 sub1 sub2 2.970 2020-04-22 2020-04-26 3 AB1342 sub1 sub2 2.970 2020-04-27 2020-05-31 2

时间段为2020年4月1日至2020年5月31日。如果4月1日之后没有交易,则假定为最先提及的价格,本例为2.97。

【问题讨论】:

  • 您的问题不清楚?您能否添加一些解释如何获得预期的输出?
  • 抱歉,我只想要每个价格的范围,例如,从 4 月 1 日到 4 月 20 日,该商品的价格为 2.97,共售出 8 件。这有点像 groupby,但我试过了,但我正在努力获得那个日期范围
  • 看起来您正在准备 df 进行生存分析。那是你的目标吗?如果是这样,为什么每天会出现多次?

标签: python python-3.x pandas date pandas-groupby


【解决方案1】:

我会尝试使用数据框的groupby 函数。 我不明白这个时期是否应该连贯,所以这只是一个解决方案的想法。 使用groupby获取item_id、子类别的所有组合

df.groupby(['item_id','subcategory1','subcategory2','price']).apply(Func1)

必须针对您的问题定义函数Func1。 如果您只需要第一天和最后一天,您可以将 agg-function 用于日期列,如

df.groupby(['item_id','subcategory1','subcategory2','price']).agg({'date': 'min', 'date': 'max'})

我希望这将帮助您更接近您的问题的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2020-12-17
    • 1970-01-01
    相关资源
    最近更新 更多