我一直在尝试过滤特定日期的数据框,尽管数据框中存在日期,但它没有返回任何结果
基于查询的数据框中的数据
df[df['Date'] > '2017-03-20']
返回此结果
StaffID Date
90047 2017-03-20 19:00:00
90049 2017-03-20 19:00:00
90049 2017-03-27 19:00:00
虽然我正在运行此查询
df[df['Date'] == '2017-03-20']
或
df.loc[df['Date'] == '2017-03-20']
它只返回一个没有结果的空数据框
StaffID Date
我的数据框列类型是
StaffID int64
Date datetime64[ns]
我已经通过比较数据框架日期与字符串以及将字符串日期转换为 datetime64 [ns] 来尝试上述查询仍然是相同的结果任何帮助请将不胜感激
答案 0 :(得分:0)
您可以进行字符串比较
$all_subs = \Stripe\Subscription::all(
array(
"plan" => $group_plan_id,
"status" => "all",
"limit" => 100
)
);
$statuses = array('active','trialing');
foreach ($all_subs->data as $sub) {
if (!in_array($sub->status,$statuses)) {
continue;
}
// do some code here
}
答案 1 :(得分:0)
使用dt.date astype string然后比较即
df[df['Date'].dt.date.astype(str) == '2017-03-20']
输出:
StaffID Date 0 90047 2017-03-20 19:00:00 1 90049 2017-03-20 19:00:00
答案 2 :(得分:0)
我使用的日期是'2017-03-20 19:00:00',这是>比'2017-03-20 00:00:00'那就是为什么它没有比较正确的最佳方法是
df.Date = df.Date.dt.date
dateToMatch = np.datetime64('2017-03-20')
df[df.Date == dateToMath]
以上代码返回
StaffID Date
0 90047 2017-03-20
1 90049 2017-03-20
这只会从我的日期列中提取日期并替换有时间的旧列
信用:Wen在评论中回答了我。