如何获得两个日期时间列熊猫之间的时间差异?

我的数据集中有两个不同的列,


       start    end

0   2015-01-01  2017-01-01

1   2015-01-02  2015-06-02

2   2015-01-03  2015-12-03

3   2015-01-04  2020-11-25

4   2015-01-05  2025-07-27

我想要以特定的方式开始和结束之间的差异,这是我期望的输出。


year_diff  month_diff

        2           1

        0           6

        0          12

        5          11

       10           7

在这里,这一天对我来说并不重要,只有月份和年份。我试图周期以获得差异,但它仅在几个月内返回不同。如何实现所需的输出?


df['end'].dt.to_period('M') - df['start'].dt.to_period('M'))


SMILET
浏览 86回答 2
2回答

慕侠2389804

尝试:df["year_diff"]=df["end"].dt.year.sub(df["start"].df.year)df["month_diff"]=df["end"].dt.month.sub(df["start"].df.month)

12345678_0001

此解决方案假定构成一年 (365) 和一个月 (30) 的天数是恒定的。如果日期时间是字符串,请将它们转换为日期时间对象。在熊猫数据帧中,这可以像这样完成def to_datetime(dataframe):    new_dataframe = pd.DataFrame()    new_dataframe[0] = pd.to_datetime(dataframe[0], format="%Y-%m-%d")    new_dataframe[1] = pd.to_datetime(dataframe[1], format="%Y-%m-%d")    return new_dataframe接下来,可以从列 0 中减去列 1 以给出天数差。我们可以使用运算符将此数字除以 365,以获得整年数。我们可以使用运算符获取剩余天数,并使用运算符将其除以 30,得到整个月数。//%//def get_time_diff(dataframe):    dataframe[2] = dataframe[1] - dataframe[0]    diff_dataframe = pd.DataFrame(columns=["year_diff", "month_diff"])    for i in range(0, dataframe.index.stop):        year_diff = dataframe[2][i].days // 365        month_diff = (dataframe[2][i].days % 365) // 30        diff_dataframe.loc[i] = [year_diff, month_diff]    return diff_dataframe使用这些函数的示例输出是       start        end days_diff year_diff month_diff0 2019-10-15 2021-08-11  666 days         1         101 2020-02-11 2022-10-13  975 days         2          82 2018-12-17 2020-09-16  639 days         1          93 2017-01-03 2017-01-28   25 days         0          04 2019-12-21 2022-03-10  810 days         2          25 2018-08-08 2019-05-07  272 days         0          96 2017-06-18 2020-08-01 1140 days         3          17 2017-11-14 2020-04-17  885 days         2          58 2019-08-19 2020-05-10  265 days         0          89 2018-05-05 2020-09-08  857 days         2          4注意:这将给出整年和月的数目。因此,如果剩下29天,一个月短一天,这将不计算在内。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python