strftime' 需要 'datetime.date' 但收到 'datetime.time'

strftime' requires a 'datetime.date' but received a 'datetime.time'

我正在尝试获取在我的数据集中唯一的所有 TimeFrame 的列表。 我的数据集有很多测量值,根据我正在研究的年份,它们有不同的时间测量值。例如,2021 年每 15 分钟进行一次测量,而 2020 年则是每 20 分钟一次。 因为我想比较忽略日期的测量,只关心时间,所以我试图获取数据集中的时间帧列表。 这是我目前所拥有的:

Data['Date | Hour'] = pd.to_datetime(Data['Date'], format='%Y-%m-%d %H:%M')
Data = Data.set_index((Data['Date | Hour']))
Data['Hour']=Data.index.time
Data['Date']=Data.index.date
TimeFrames=[]
V=Data['Hour'].unique()
a=np.arange(0,len(V))
for i in a:
    TimeFrames.append(datetime.strftime(V[i],'%H:%M:%S'))

结果应该是这样的:

TimeFrames=['00:00:00','00:15:00','00:30:00','00:45:00' ...

但是,结果是:

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'datetime.time'

我试着用日期 (V=Data[‘Date’].unique()) 来做,结果产生了一个日期列表…… 我在想,也许我可以在 V、运行 循环中添加一个随机日期,并在获取列表后从所有字符串中删除日期,从而得到我想要的列表,但那将是我最后的选择..有什么想法吗??

请注意,strftime 可用作 classes datetime.datetimedatetime.datedatetime.time 的方法(另请参阅 documentation on datetime module ), 而你在这里处理的是一个 datetime.time 对象。

因此,将最后一行更改为

之类的内容应该没问题
time.strftime(V[i],'%H:%M:%S')

调用三种方法中正确的一种(当然你必须使用 from datetime import time 导入 class)。

为了使其更短,您可以直接遍历数组(不需要 Va):

for v in Data['Hour'].unique():
    TimeFrames.append(time.strftime(v,'%H:%M:%S'))