如何使用python在数据帧中查找最早的连续日期?

如何使用python在数据帧中查找最早的连续日期?,python,pandas,numpy,dataframe,datetime,Python,Pandas,Numpy,Dataframe,Datetime,嗨,我有一个数据框,有3列,如下所示。 我想使用Python计算每个员工ID的最早“开始日期”。 例如 对于员工ID SNC1289037,开始日期将为1/1/2020,结束日期将为12/31/2999,因为时间段中没有中断。 对于员工ID SNC2289038,开始日期将为2020年1月3日,结束日期将为2999年12月31日,因为时间段中存在中断 Employee_ID|Start_date | End_date --------------------------------- SNC12

嗨,我有一个数据框,有3列,如下所示。 我想使用
Python
计算每个员工ID的最早“开始日期”。 例如 对于
员工ID SNC1289037
,开始日期将为
1/1/2020
,结束日期将为
12/31/2999
,因为时间段中没有中断。 对于
员工ID SNC2289038
,开始日期将为2020年1月3日,结束日期将为2999年12月31日,因为时间段中存在中断

Employee_ID|Start_date | End_date
---------------------------------
SNC1289037  1/1/2020    1/31/2020
SNC1289037  2/1/2020    2/29/2020
SNC1289037  3/1/2020    3/30/2020 
SNC1289037  4/1/2020    12/31/2999 
SNC2289038  1/1/2020    1/31/2020
SNC2289038  3/1/2020    3/30/2020
SNC2289038  4/1/2020    12/31/2999
SNC4589038  1/1/2020    1/31/2020
SNC4589038  2/1/2020    2/29/2020
SNC4589038  3/1/2020    3/30/2020

非常感谢您的帮助。

日期(如2999年12月31日)会导致Pandas Datetime函数出现问题,即

假设:可以将日期限制在2199年12月31日(而不是2999年12月31日)

代码

# Data
s = '''Employee_ID Start_date End_date
SNC1289037 1/1/2020 1/31/2020
SNC1289037 2/1/2020 2/29/2020
SNC1289037 3/1/2020 3/30/2020
SNC1289037 4/1/2020 12/31/2199
SNC2289038 1/1/2020 1/31/2020
SNC2289038 3/1/2020 3/30/2020
SNC2289038 4/1/2020 12/31/2199
SNC4589038 1/1/2020 1/31/2020
SNC4589038 2/1/2020 2/29/2020
SNC4589038 3/1/2020 3/30/2020'''

# Data to Pandas DataFrame
from io import StringIO
df = pd.read_csv(StringIO(s), delim_whitespace=True)

# Convert date columns to dates
df['Start_date']= pd.to_datetime(df['Start_date'])
df['End_date']= pd.to_datetime(df['End_date'])

# Show Earliest Start date, and last End date by Group (using aggregate function)
df.groupby('Employee_ID').agg({'Start_date' : "min", 'End_date': "max"})
输出

            Start_date  End_date
Employee_ID     
SNC1289037  2020-01-01  2199-12-31
SNC2289038  2020-01-01  2199-12-31
SNC4589038  2020-01-01  2020-03-30

请不要包含那些不一定是图像的东西的图像。我们努力回答您的问题,请努力正确地提供示例数据。@Pandas--您的数据中是否需要像2999年12月31日这样的日期?如此大的日期在转换为日期对象时会导致错误,因为熊猫中的日期限制为64位时间戳。这意味着像2199年12月31日这样的日期是否足够?