Python 年数

Count of Year in Python

如何从某个日期和自人们开设帐户 (CRDACCT_DTE_OPEN) 以来的某个日期找到 python 中的年数?特定日期 (MIS_DATE) 是 2021-03-01,格式 = '%Y%m%d'.

下面给出的数据集:

import pandas as pd
df = pd.DataFrame(
     { "MIS_DATE": ["2018-03-02", "2020-03-26", "2019-08-17", "2019-08-17", "2019-08-19"],
       "CRDACCT_DTE_OPEN": ["2021-03-31", "2021-03-31", "2021-03-31", "2021-03-31",  "2021-03-31"]})

格式化日期:

df['CRDACCT_DTE_OPEN'] = pd.to_datetime(df['CRDACCT_DTE_OPEN'], format='%Y%m%d')
df['MIS_DATE'] = pd.to_datetime(df['MIS_DATE'], format='%d%m%Y')

我试过做这个手术。假设 MOBMIS_DATE - CRDACCT_DTE_OPEN 的减法,但结果不是我所期望的。 我想要年份格式的输出,例如,如果某人在 2018-03-31 开设了帐户,则 MOB 为 3。 表示该人开设帐户后 3 年.

MOB = df['MIS_DATE'] - df['CRDACCT_DTE_OPEN']
MOB

输出:

1        370 days
2        592 days
3        592 days
4        590 days
 ...   

Name: MOB, Length: 5, dtype: timedelta64[ns]

这就是你需要的。

df['col_of_datetime'].dt.year

这是例子

import pandas as pd
df = pd.DataFrame(
    {"MIS_DATE": ["2018-03-02", "2020-03-26", "2019-08-17", "2019-08-17", "2019-08-19"],
     "CRDACCT_DTE_OPEN": ["2021-03-31", "2021-03-31", "2021-03-31", "2021-03-31",  "2021-03-31"]})

df['CRDACCT_DTE_OPEN'] = pd.to_datetime(df['CRDACCT_DTE_OPEN'], format='%Y-%m-%d')
df['MIS_DATE'] = pd.to_datetime(df['MIS_DATE'], format='%Y-%m-%d')

target_year = 2021
result = target_year - df['MIS_DATE'].dt.year
print(result)

输出:

0    3
1    1
2    2
3    2
4    2
Name: MIS_DATE, dtype: int64

请试试这个:这里我们使用 Pandas

中的 date_range 函数
for x in range(len(df)):
print(len(pd.date_range(start=pd.to_datetime(df.iloc[x][0]),end=pd.to_datetime(df.iloc[x][1]),freq='Y')))

3
1
2
2
2

您可以更改 freq ='M' 个月

你可以使用 numpy 的 timedelta()

import numpy
(MOB/numpy.timedelta64(1, 'Y')).round()
0    3.0
1    1.0
2    2.0
3    2.0
4    2.0
dtype: float64