Pandas:如何计算以月为单位的 timedelta


您可以使用以下函数来计算 pandas DataFrame 的两列之间的时间增量(以月为单位):

 def month_diff(x, y):
    end = x. dt . to_period (' M '). view (dtype=' int64 ')
    start = y. dt . to_period (' M '). view (dtype=' int64 ')
    return end-start

下面的例子展示了如何在实际中使用这个功能。

示例:计算 Pandas 中的 Timedelta(以月为单位)

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' event ': ['A', 'B', 'C'],
                   ' start_date ': ['20210101', '20210201', '20210401'],
                   ' end_date ': ['20210608', '20210209', '20210801'] })

#convert start date and end date columns to datetime
df[' start_date '] = pd. to_datetime (df[' start_date '])
df[' end_date '] = pd. to_datetime (df[' end_date '])

#view DataFrame
print (df)

  event start_date end_date
0 A 2021-01-01 2021-06-08
1 B 2021-02-01 2021-02-09
2 C 2021-04-01 2021-08-01

现在假设我们要计算start_dateend_date列之间的时间增量(以月为单位)。

为此,我们首先定义以下函数:

 #define function to calculate time delta in months between two columns
def month_diff(x, y):
    end = x. dt . to_period (' M '). view (dtype=' int64 ')
    start = y. dt . to_period (' M '). view (dtype=' int64 ')
    return end-start

接下来,我们将使用此函数计算start_dateend_date列之间的时间增量(以月为单位):

 #calculate month difference between start date and end date columns
df[' month_difference '] = month_diff(df. end_date , df. start_date )

#view updated DataFrame
df

    event start_date end_date month_difference
0 A 2021-01-01 2021-06-08 5
1 B 2021-02-01 2021-02-09 0
2 C 2021-04-01 2021-08-01 4

Month_difference列显示start_dateend_date列之间的时间增量(以月为单位)。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何将 Pandas 中的列转换为日期时间
如何将 DateTime 转换为 Pandas 中的日期
如何从 Pandas 中的日期中提取月份

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注