【发布时间】:2020-10-07 10:06:30
【问题描述】:
我正在使用一个数据集,该数据集列出了自在我们的 ERP 中创建条目以来经过的时间量。它以经过的秒数显示(尽管有些对象是几天前的)。我想在我的表中创建一个新列(格式为 MM:DD:YY HH:SS),通过减去从当前时间过去的秒数来显示输入的日期/时间。 “时间”列的数据类型是“M8[ns]”
我查看了不同部分的各种解决方案(例如将我的数据框中的条目转换为秒),但我的代码遇到了一些困难。这是我尝试过的:
import pandas as pd
import time
import datetime
df = pd.read_excel (r'File1.xlsx', sheet_name = 'Sheet1')
df['Time'] = df['Time'].astype('float64')
df['Time'] = pd.to_datetime(df['Time'], unit = 's')
Date Created = (datetime.now () - df['Time'])
df['Date Created'] = Date Created
任何见解将不胜感激
更新: 我取得了一些进展
import pandas as pd
import time
from datetime import datetime
df = pd.read_excel (r'File1.xlsx', sheet_name = 'Sheet1')
df['Time'] = pd.to_datetime(df['Time'], unit = 's')
df['Date Created'] = datetime.now() - df['Time']
Time 列现在存储为 int64。使用新代码,['Time'] 显示:1970-01-01 00:02:57 然而,自创建以来仅过去了 2:57。有些值是几天前创建的。我希望能够从当前时间中减去 2:57 以找到输入的日期时间。
感谢您的支持。
更新 2: 我的一位工程师和我想出了一种方法来确定条目的创建日期。
timer = pd.to_timedelta(df['Time'], unit='s')
#timer = pd.to_datetime(timer)
now = pd.to_datetime(datetime.now())
#x = (datetime.now()-datetime(1970,1,1)) #.total_seconds()
#print(timer)
#x = datetime.now()-timer #.total_seconds()
date_created = now-timer
print('Date Created:\n', date_created)
【问题讨论】:
标签: python pandas dataframe type-conversion