gpt4 book ai didi

python - 计算 Pandas GroupBy 对象中的日期差异

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:44 25 4
gpt4 key购买 nike

我有一个格式如下的 Pandas DataFrame:

In [0]: df
Out[0]:
col1 col2 date
0 1 1 2015-01-01
1 1 2 2015-01-09
2 1 3 2015-01-10
3 2 1 2015-02-10
4 2 2 2015-02-10
5 2 3 2015-02-25

In [1]: df.dtypes
Out[1]:
col1 int64
col2 int64
date datetime64[ns]
dtype: object

我们想要找到与日期(按日期排序的组中的连续元素之间)的最大差异相对应的 col2 值,按 col1 分组。假设没有大小为 1 的组。

期望的输出

In [2]: output
Out[2]:
col1 col2
1 1 # This is because the difference between 2015-01-09 and 2015-01-01 is the greatest
2 2 # This is because the difference between 2015-02-25 and 2015-02-10 is the greatest

真正的 df 有很多 col1 的值,我们需要对其进行分组以进行计算。这可以通过将函数应用于以下内容来实现吗?请注意,日期已经按升序排列。

gb = df.groupby(col1)
gb.apply(right_maximum_date_difference)

最佳答案

我会尝试一个稍微不同的策略:旋转表格,这样您在 col2 中的每个值都有一个列,其中包含日期和 col1 的值作为索引.然后你可以使用 .diff 方法来获取连续单元格之间的差异。如果有重复的 col1, col2 对,这可能不起作用,这在问题中并不清楚。

df = pd.DataFrame({'col1': [1, 1, 1, 2, 2, 2],
'col2': [1, 2, 3, 1, 2, 3],
'date': pd.to_datetime(['2015-01-01', '2015-01-09', '2015-01-10',
'2015-02-10', '2015-02-10', '2015-02-25'])})
p = df.pivot(columns='col1', index='col2', values='date')
p
col1 1 2
col2
1 2015-01-01 2015-02-10
2 2015-01-09 2015-02-10
3 2015-01-10 2015-02-25

p.diff().shift(-1).idxmax()

col1
1 1
2 2

.shift(-1) 处理这样一个事实,即您想要两个连续日期中的第一个具有最大差异的日期。

关于python - 计算 Pandas GroupBy 对象中的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com