python-3.x - 计算行之间的时间增量作为第二列每个元素的最大时间和最小时间之间的差

标签 python-3.x pandas max min timedelta

我想根据该商品的第一个订单和最后一个订单之间需要多长时间来计算该商品的分布。 不过,为了实现这一目标,首先我必须获得每个项目的时间增量。

我的初始数据框有三列:“Order_ID”、“Order_DATE”、“Medium_ID”,如下例:

df = pd.DataFrame({'Medium_ID': {0: '1359',
 1: '1360',
 2: '1359',
 3: '1360',
 4: '1360',
 5: '1404',
 6: '1381',
 7: '1359',
 8: '1419',
 9: '1360'},

 'Order_ID': {0: '1',
 1: '2',
 2: '3',
 3: '4',
 4: '5',
 5: '6',
 6: '7',
 7: '8',
 8: '9',
 9: '10'},

'Order_DATE': {0: Timestamp('2008-04-21 00:00:00'),
 1: Timestamp('2008-04-21 00:00:00'),
 2: Timestamp('2008-04-21 00:00:00'),
 3: Timestamp('2008-04-21 00:00:00'),
 4: Timestamp('2008-04-22 00:00:00'),
 5: Timestamp('2008-04-22 00:00:00'),
 6: Timestamp('2008-04-23 00:00:00'),
 7: Timestamp('2008-04-23 00:00:00'),
 8: Timestamp('2008-04-23 00:00:00'),
 9: Timestamp('2008-04-28 00:00:00')}}))

因为同一个 media_ID 可以有多个 order_ID,所以我首先尝试按“Medium_ID”列进行分组,但随后我不知道如何演变。

我想要一个包含两列的新数据框:“Medium_ID”和“Days_ Between_the_last_and_the_first-order”,最后显示“Days_ Between_the_last_and_the_first-order”系列的分布。

最佳答案

您可以计算每个商品的第一个订单和最后一个订单之间的天数,例如:

df.groupby('Medium_ID').Order_DATE.apply(lambda x: x.max() - x.min())

结果是:

Medium_ID
1359   2 days
1360   7 days
1381   0 days
1404   0 days
1419   0 days

关于python-3.x - 计算行之间的时间增量作为第二列每个元素的最大时间和最小时间之间的差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55764934/

相关文章:

python - Pandas 情节 : fixing a color by value

java - 具有昂贵的自定义键功能的列表的最大值

具有最小值和最大值的 SQL 组

python - 在python3中调用Numpy、Scipy、Gensim时出错

python - 请求无法从网页获取文本?

python3 将字符串传递给子进程的标准输入的问题

python - 带有换行符的文本文件到数据框 pandas 中

python - 如何解决类型错误 : '<' not supported between instances of 'int' and 'str' ?

Python:循环元组并将每个值插入到数据框中

SQL 选择最大计数