'Timestamp'对象没有'dt'熊猫的属性



我在一个10mb的csv中有一个100000行15列的数据集。

我正在处理的列是字符串格式中的:日期/时间列

源代码

import pandas as pd
import datetime as dt

trupl = pd.DataFrame({'Time/Date' : ['12/1/2021 2:09','22/4/2021 21:09','22/6/2021 9:09']})
trupl['Time/Date'] = pd.to_datetime(trupl['Time/Date'])
print(trupl)

输出

Time/Date
0 2021-12-02 02:09:00
1 2021-04-22 21:09:00
2 2021-06-22 09:09:00

我需要做的有点令人困惑,但我会尽量让它变得简单:

  • 如果日期的时间在上午12点到8点之间;从时间/日期中减去一天,并将新的时间戳放在一个新列中。

  • 如果没有,就照原样说。

预期输出

Time/Date    Date_adjusted
0   12/2/2021 2:09   12/1/2021 2:09
1  22/4/2021 21:09  22/4/2021 21:09
2   22/6/2021 9:09   22/6/2021 9:09

我尝试了以下代码:

trupl['Date_adjusted'] = trupl['Time/Date'].map(lambda x:x- dt.timedelta(days=1) if x >= dt.time(0,0,0) and x < dt.time(8,0,0) else x)

我得到一个TypeError:'>='在"Timestamp"one_answers"datetime.time"之间不支持

当把dt.time应用于x时,我得到一个错误";时间戳";对象没有属性"dt">

那么我如何将x转换为时间来进行比较呢?或者有更好的解决方法?

我找了很多修复方法,但找不到类似的案例。

尝试:

trupl['Date_adjusted'] = trupl['Time/Date'].map(lambda x: x - dt.timedelta(days=1) if (x.hour >= 0 and x.hour < 8) else x)

最新更新