Python在Pandas格式中的数据比较不匹配
我有下面这个数据输入(test.csv)
date,time
26-02-2024,8:01
26-02-2024,8:01
26-02-2024,7:59
26-02-2024,7:59
26-02-2024,7:56
26-02-2024,7:55
26-02-2024,7:55
26-02-2024,7:53
26-02-2024,7:52
26-02-2024,7:52
现在我有下面这段代码
df = pd.read_csv('test.csv')
df.columns = df.columns.str.strip()
df = df[(datetime.strptime(str(df['date']),'%Y-%m-%d') <= datetime.now())]
我遇到了一个错误
ValueError: 时间数据 '0 26-02-2024\n1 26-02-2024\n2
26-02-2024\n3 26-02-2024\n4 26-02-2024\n5 26-02-2024\n6
26-02-2024\n7 26-02-2024\n8 26-02-2024\n9 26-02-2024\n名称: date, dtype: object' 和格式 '%Y-%m-%d' 不匹配
当我尝试
df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d')
我得到了以下错误:
ValueError: 时间数据 "26-02-2024" 和格式 "%Y-%m-%d" 不匹配,在位置 0。你可能想试试:
当我尝试
df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d',errors='coerce')
我在输出中得到了日期列为null,这看起来像是日期列的值有问题,但我搞不清楚原因
我无法找到为什么会这样
更新
感谢Panda Kim,把日期格式改成 %d-%m-%Y 后可以正常工作,但当我在条件上应用同样的东西时又出现错误
df = df[ pd.to_datetime(start_date,format='%d-%m-%Y') <= pd.to_datetime(df['date'], format='%d-%m-%Y') <= pd.to_datetime(end_date,format='%d-%m-%Y')]
现在抛出错误
ValueError: 一个Series的真值是模糊的。请使用 a.empty, a.bool(), a.item(), a.any() 或 a.all()。
任何指导都会很欢迎
1 个回答
2
使用下面的代码
df = df[pd.to_datetime(df['date'], format='%d-%m-%Y') <= pd.to_datetime('today')]