Pandas日期时间过滤器



如果日期在2022-04-22之前,我想获得我的数据框架的子集。原来的df如下

p>
date       hour    value
0  2022-04-21  0       10   
1  2022-04-21  1       12   
2  2022-04-21  2       14 
3  2022-04-23  0       10   
4  2022-04-23  1       12   
5  2022-04-23  2       14   

我检查数据类型df.dtypes它告诉我'date''object'.

所以我使用df['date'][0]检查单个单元格它是datetime。日期(202,4,21).

同样,df['date'][0]给了我'True'

但是,当我想要应用

小于整个数据框时df2 = df[df['date']

it showTypeError: '<'在'str'和'datetime.date'实例之间不支持

为什么会发生这种情况?提前感谢!

您很可能仍然在其中一行中有一些字符串日期,因此第一个元素可能是可以的,但使用"><"对所有值进行完整比较将失败。

你可以在评论中使用timegeb的答案。

df['date'] = pd.to_datetime(df['date'])

或者将它们转换为元素

import datetime
df['date']=[datetime.datetime.strptime(d,'%Y-%m-%d') if type(d)==str else d for d in test]

如果行中有奇数字符串,这两个方法都可能失败。在这种情况下,您可以使用:

def convstr2date(d):
if type(d)==str:
try:    
d = datetime.datetime.strptime(str(d),'%Y-%m-%d')
except:
d = np.datetime64('NaT')
return d
df['date'] = [convstr2date(d) for d in df['date']]

最新更新