如果日期在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]
但是,当我想要应用
小于整个数据框时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']]