gpt4 book ai didi

python - 计算新 DataFrame 列中给定日期以来的月数

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:52 24 4
gpt4 key购买 nike

我有 Pandas 问题。

我有一个如下所示的数据框:

name     date
Mark 2018-01-01
Anne 2018-01-01
Anne 2018-02-01
Anne 2018-04-01
Anne 2018-09-01
Anne 2019-01-01
John 2018-02-01
John 2018-06-01
John 2019-02-01
Ethan 2018-03-01

我需要计算一个额外的列,将其称为 months,其中包含给定相同名称的日期列中第一个值之间的月数。这是为了计算自名称第一次出现在 DataFrame 以来已经过去了多少个月。计算必须按名称分组,因为我只想知道自用户第一次出现在出现用户名的行中以来的月数,而不是任何其他用户名。

这种情况下的预期输出是:

name     date          months
Mark 2018-01-01 0
Anne 2018-01-01 0
Anne 2018-02-01 1
Anne 2018-04-01 3
Anne 2018-09-01 8
Anne 2019-01-01 12
John 2018-02-01 0
John 2018-06-01 4
John 2019-02-01 12
Ethan 2018-03-01 0

如果您能提供有关计算 months 列的最有效方法的任何提示,我们将不胜感激。

最佳答案

我们可以使用 GroupBy.transform 将最低值作为与我们的数据帧等长的向量。然后用这个向量减去每个 date 值,并将它除以 1 month timedelta

mins = df.groupby('name')['date'].transform('min')

df['months'] = df['date'].sub(mins).div(pd.Timedelta(1, 'M')).round().astype(int)

输出

    name       date  months
0 Mark 2018-01-01 0
1 Anne 2018-01-01 0
2 Anne 2018-02-01 1
3 Anne 2018-04-01 3
4 Anne 2018-09-01 8
5 Anne 2019-01-01 12
6 John 2018-02-01 0
7 John 2018-06-01 4
8 John 2019-02-01 12
9 Ethan 2018-03-01 0

关于python - 计算新 DataFrame 列中给定日期以来的月数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57544192/

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