如何使用pandas获取两个日期之间的天数

Sha*_*ker 5 python datetime python-datetime pandas

我正在尝试使用以下函数获取两个日期之间的天数

df['date'] = pd.to_datetime(df.date)

# Creating a function that returns the number of days
def calculate_days(date):
    today = pd.Timestamp('today')
    return today - date

# Apply the function to the column date
df['days'] = df['date'].apply(lambda x: calculate_days(x))
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样

153 天 10:16:46.294037

但我想让它说153。我该如何处理这个问题?

jez*_*ael 7

为了提高性能,您可以在不使用 for 的情况下减去值,apply避免循环使用Series.rsubfor 从右侧减去:

df['date'] = pd.to_datetime(df.date)
df['days'] = df['date'].rsub(pd.Timestamp('today')).dt.days
Run Code Online (Sandbox Code Playgroud)

工作原理如下:

df['days'] = (pd.Timestamp('today') - df['date']).dt.days
Run Code Online (Sandbox Code Playgroud)

如果想使用您的解决方案:

df['date'] = pd.to_datetime(df.date)

def calculate_days(date):
    today = pd.Timestamp('today')
    return (today - date).days

df['days'] = df['date'].apply(lambda x: calculate_days(x))
Run Code Online (Sandbox Code Playgroud)

或者:

df['date'] = pd.to_datetime(df.date)

def calculate_days(date):
    today = pd.Timestamp('today')
    return (today - date)

df['days'] = df['date'].apply(lambda x: calculate_days(x)).dt.days
Run Code Online (Sandbox Code Playgroud)