熊猫:使用日期列来计算天数

时间:2021-05-28 15:24:18

标签: python pandas

我使用的是 AirBnb 数据集。我有一个专栏,'host_since'。该列包含格式为“DD/MM/YYYY”的日期对象:例如,24/09/2008。列的数据显示个人成为主持人的日期。

我想在我的数据框中创建一个新列,其中包含自主机首次加入以来的天数。我知道 to_datetime 方法,但不太了解文档。

注意:df['host_days'] 在 df 中不存在。我想创建一个列,然后分配适当的步骤来获得我的结果

def add_host_days(df):    
    df['host_days'] = df['host_since'].to_datetime()
  return df

关于如何做到这一点的任何想法?感谢您的投入。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

def add_host_days(df):    
    df['host_days'] = (pd.Timestamp.now() - pd.to_datetime(df['host_since'], dayfirst=True)).dt.days

    # If you original date fields have invalid dates and would like this number of days to be in integer:
    df['host_days'] = df['host_days'].astype('Int64')   

    return df

演示

假设你有一个这样的数据框:

  guest_id  host_since
0    A0001  24/09/2008
1    A0002  25/09/2008
2    A0003  29/09/2008
3    A8788  20/05/2021

然后运行代码:

new_df = add_host_days(df)

结果:

print(new_df)


  guest_id  host_since  host_days
0    A0001  24/09/2008       4629
1    A0002  25/09/2008       4628
2    A0003  29/09/2008       4624
3    A8788  20/05/2021          8

答案 1 :(得分:1)

无法测试它,因为您没有提供任何可重现的代码,但您可以从当前日期中减去 host_since 并捕获诸如 -

def add_host_days(df):    
    df['host_days'] = df.apply(lambda x: (datetime.datetime.today() - x.host_since).days, axis=1)
    return df