【问题标题】:Convert the month difference into integer将月差转换为整数
【发布时间】:2019-07-30 13:44:37
【问题描述】:

具有如下日期时间列的数据集,我将周期转换为月份并计算差异。我想将输出转换为整数,但没有成功。

ID    StartDate    CurrentDate 
a     2019-03-05   2019-06-18
b     2019-02-05   2019-07-20
c     2019-01-23   2019-07-25

df['start_month_year'] = df['StartDate'].dt.to_period('M')
df['current_month_year'] = df['CurrentDate'].dt.to_period('M')
df['tenure'] = (df['current_month_year'] - df['start_month_year'])
df['tenure'].astype(int)

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    这是一种方法

    df.CurrentDate.dt.year*12+df.CurrentDate.dt.month-(df.StartDate.dt.year*12+df.StartDate.dt.month)
    Out[512]: 
    0    3
    1    5
    2    6
    dtype: int64
    

    在结果变为pandas.tseries.offsets.MonthEnd 之前添加astype 来修复您的代码

    (df['CurrentDate'].dt.to_period('M').astype(int)-df['StartDate'].dt.to_period('M').astype(int))
    

    【讨论】:

      【解决方案2】:

      让我们玩一下 pandas.tseries.offsets:

      使用您的代码,您可以通过使用apply 从 pandas.tseries.offsets 对象中检索此属性来获取偏移量 n,如下所示:

      df['start_month_year'] = df['StartDate'].dt.to_period('M')
      df['current_month_year'] = df['CurrentDate'].dt.to_period('M')
      df['tenure'] = (df['current_month_year'] - df['start_month_year'])
      df['tenure'].apply(lambda x: x.n)
      

      输出:

      0    3
      1    5
      2    6
      Name: tenure, dtype: int64
      

      不过,我更喜欢@WeNYoBen 的方法。

      【讨论】:

      猜你喜欢
      • 2020-07-07
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2021-04-18
      • 2023-03-13
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多