我有两列日期,我需要根据这两列的总和创建另一列。 df 如下所示:
date_1 date_2 result_date
2024-07-07 18:00:00.000000 0001-01-02T01:12:53.832 2024-07-08 19:12:53
2024-07-07 08:46:00.000000 0001-01-04T08:00:00 2024-07-10 16:46:00
2024-07-07 17:42:00.000000 0001-01-08T02:00:00 2024-07-14 19:42:00
2024-07-07 17:42:00.000000 0002-01-01T02:00:00 2025-07-07 19:42:00
date_1 和 date_2 列的类型是“object”。在 date_2 列中,代码显示第一年的日期。我不知道如何添加它们。
data = {
'date_1': ['2024-07-07 18:00:00.000000', '2024-07-07 08:46:00.000000', '2024-07-07 17:42:00.000000', '2024-07-07 17:42:00.000000'],
'date_2': ['0001-01-02T01:12:53.832', '0001-01-04T08:00:00', '0001-01-08T02:00:00', '0002-01-01T02:00:00']
}
df = pd.DataFrame(data)
问题在于你的“date_2”列不包含标准年份,这使得直接添加日期变得很困难。要解决此问题并正确添加日期,你需要将“date_2”中的年份调整为有意义的年份。假设“date_2”中的年份指的是从“date_1”年份开始的偏移量,则以下代码可以实现此目的:
import pandas as pd
data = {
'date_1': ['2024-07-07 18:00:00.000000', '2024-07-07 08:46:00.000000', '2024-07-07 17:42:00.000000', '2024-07-07 17:42:00.000000'],
'date_2': ['0001-01-02T01:12:53.832', '0001-01-04T08:00:00', '0001-01-08T02:00:00', '0002-01-01T02:00:00']
}
df = pd.DataFrame(data)
# 将字符串日期列转换为日期时间对象
df['date_1'] = pd.to_datetime(df['date_1'])
df['date_2'] = pd.to_datetime(df['date_2'], format='%Y-%m-%dT%H:%M:%S.%f')
# 从 date_2 中提取年份偏移量
df['year_offset'] = df['date_2'].dt.year - 1
# 将年份偏移量添加到 date_1 的年份中
df['adjusted_year'] = df['date_1'].dt.year + df['year_offset']
# 用调整后的年份替换 date_2 中的年份
df['date_2'] = df.apply(lambda row: row['date_2'].replace(year=row['adjusted_year']), axis=1)
# 现在你可以添加日期了
df['result_date'] = df['date_1'] + (df['date_2'] - df['date_2'].dt.normalize())
# 删除不再需要的帮助列
df = df.drop(columns=['year_offset', 'adjusted_year'])
print(df)
此代码首先将字符串日期列转换为日期时间对象。然后,它计算“date_2”中的年份偏移量,并将其添加到“date_1”的年份中以获得调整后的年份。然后,它使用此调整后的年份更正“date_2”中的年份。最后,它通过添加“date_1”和(“date_2”的时间部分)计算“result_date”。
此解决方案假设“date_2”中的年份表示从“date_1”年份开始的偏移量。如果此假设不正确,请提供有关“date_2”年份含义的更多信息,以便我提供更准确的解决方案。
标签:python,pandas,dataframe,datetime,time From: 78779076