首页 > 编程问答 >添加日期列

添加日期列

时间:2024-07-23 14:54:34浏览次数:10  
标签:python pandas dataframe datetime time

我有两列日期,我需要根据这两列的总和创建另一列。 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

相关文章

  • Python中如何实现字符串的查询和替换?
    在Python中,字符串的查询和替换是编程中常见的任务,它们可以通过Python的内置方法和库来高效实现。这些操作对于文本处理、数据清洗、日志分析等场景尤为重要。下面,我将详细阐述如何在Python中实现字符串的查询和替换,包括基础方法、高级技巧以及在实际应用中的注意事项。字符......
  • Python中的`range()`函数及其用法
    range()函数是Python中的一个内置函数,它用于生成一个数字序列。这个函数在循环结构中尤其有用,因为它允许我们迭代一系列的数字,而无需显式地创建这些数字的列表。range()函数通过指定起始值、结束值(不包括)和步长(可选)来工作,返回一个可迭代对象,通常用于for循环中。下面将......
  • 为何生成静态页的时候或者上传附件过程中有报错:Maximum execution time of 30 seconds
    错误记录:为何生成静态页的时候或者上传附件过程中有报错:Maximumexecutiontimeof30secondsexceeded 解决方案:由于上传或者生成静态页的时候执行时间太久,超过服务器超时时间限制所致:请到服务器里面PHP配置修改下超时时间即可解决(修改后需重启服务或者服务器)具体方法为:......
  • python 的注释(例如数据类)可以扩展到它生成的代码中吗?
    能看出python的注释扩展成​​什么吗?例如,对于与数据类相关的错误,有时试图找出它实际生成的代码有点棘手。例如:@dataclass(order=True)classPerson:name:strage:int=0classPerson:def__init__(self,name:str,age=0):self.name=name......
  • Docker:无法在 docker 映像中使用 pythonnet 和 |无法创建默认的 .NET 运行时,该运行时
    我正在尝试使用clrfromPythonnet使用.DLL引用将一种文件类型转换为另一种文件类型。这就是我的代码的样子-importclrclr.AddReference(dll_path)importRxLibrary#ConverttoASCFormat-----------input_file=f"./{filename}.rxd"......
  • 在 Python 中以非常高的质量保存图像
    如何以非常高的质量保存Python绘图?也就是说,当我不断放大PDF文件中保存的对象时,为什么没有任何模糊?另外,什么是最好的模式将其保存在?png,eps?或者其他的?我不能pdf,因为有一个隐藏的数字会扰乱Latexmk编译。要以非常高的质量保存Py......
  • Python字符串:提取重复和随机合并的子字符串
    重复和合并字符串的示例:16.01068.0%08p%.a.p.a.要提取的所需子字符串:16.008%p.a.完整示例:CCoonnttiinnggeennttCCoouuppoonn16.01068.0%08p%.a.p(.Ma.o(nMtholyn)thly)所需子字符串:ContingentCoupon16.008%p.a.(Monthly)我的问题是当原始......
  • pandas 读取 SQL 表会引发 NotImplementedError
    有人可以帮忙照顾熊猫吗?我无法读取sqlite3表。这是我的代码:importpandasaspdimportsqlite3assqwithsq.connect("master.db")ascon:table="personal"df=pd.read_sql_table(table,con)数据库文件和代码位于同一目录中。Python引发No......
  • Python Pandas 从使用第 3 部分 API 自动生成的 Excel 文件中读取不一致的日期格式
    我正在使用PDF4meAPI将PDF发票转换为Excel文件。API可以正确读取日期。但是,当我打开Excel文件时,日期显示不一致:某些日期以正确的格式(dd/mm/yyyy)显示,而其他日期以错误的mm/dd/yyyy格式显示。当该月的某天小于或等于12时,似乎会出现这种不一致。......
  • python-input键盘输入
     str=input("请输入:")#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str) aa='请输入:'str=input(aa)#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str)      ......