【问题标题】:Calculate Number of Months Iteratively In Pandas在 Pandas 中迭代计算月数
【发布时间】:2021-08-01 01:21:45
【问题描述】:

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

    id      date        x
0   15260   2020-01-22  1
1   15260   2020-06-13  6               
2   15801   2020-12-04  5                
3   23369   2021-01-01  4
4   15260   2020-10-13  3
5   15801   2021-01-04  1
6   23369   2021-02-05  1

我想为每个id 添加一个表示自第一个x 以来的月数的列。 完成的数据框应如下所示:

    id      date        x   y
0   15260   2020-01-22  1   1
1   15260   2020-06-13  6   6              
2   15801   2020-12-04  5   1                
3   23369   2021-01-01  4   1
4   15260   2020-10-13  3   10
5   15801   2021-01-04  1   2
6   23369   2021-02-05  1   2

如何做到这一点?

【问题讨论】:

    标签: python pandas numpy time-series jupyter


    【解决方案1】:

    您可以找到每个 id 的最早日期并从每个日期中减去该值(分别为年和月,然后将增量组合成差异月数):

    z = df.groupby('id')['date'].transform('min')
    df['y'] = (
        (df['date'].dt.year - z.dt.year)*12 +
        (df['date'].dt.month - z.dt.month)
        + 1)
    df
    

    输出:

          id       date  x   y
    0  15260 2020-01-22  1   1
    1  15260 2020-06-13  6   6
    2  15801 2020-12-04  5   1
    3  23369 2021-01-01  4   1
    4  15260 2020-10-13  3  10
    5  15801 2021-01-04  1   2
    6  23369 2021-02-05  1   2
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2021-02-24
      • 2014-04-01
      • 1970-01-01
      • 2021-04-02
      • 2016-03-11
      • 2020-09-11
      • 2020-08-09
      相关资源
      最近更新 更多