我使用的是 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
关于如何做到这一点的任何想法?感谢您的投入。
答案 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