【发布时间】:2020-09-04 18:02:50
【问题描述】:
我有一个看起来像这样的 csv,名为“output_data.csv”:
date product conditional client time termination_date
18/04/2020 Test 1 TRUE Test 1 10 NaN
19/04/2020 Test 1 TRUE Test 1 10 NaN
20/04/2020 Test 1 TRUE Test 1 10 NaN
21/04/2020 Test 1 TRUE Test 1 10 NaN
22/05/2020 Test 1 TRUE Test 1 10 NaN
23/05/2020 Test 1 TRUE Test 1 10 NaN
24/05/2020 Test 1 TRUE Test 1 10 NaN
18/05/2020 Test 1 TRUE Test 2 10 19/05/2020
19/05/2020 Test 1 TRUE Test 2 10 19/05/2020
20/05/2020 Test 1 TRUE Test 2 10 19/05/2020
21/05/2020 Test 1 TRUE Test 2 10 19/05/2020
22/05/2020 Test 1 TRUE Test 2 10 19/05/2020
23/05/2020 Test 1 TRUE Test 2 10 19/05/2020
24/05/2020 Test 1 TRUE Test 2 10 19/05/2020
我试图在我的代码中写一个简单的行来过滤掉任何具有终止日期
所以输出看起来像这样:
date product conditional client time termination_date
19/05/2020 Test 1 TRUE Test 1 10
19/05/2020 Test 1 TRUE Test 1 10
20/05/2020 Test 1 TRUE Test 1 10
21/05/2020 Test 1 TRUE Test 1 10
22/05/2020 Test 1 TRUE Test 1 10
23/05/2020 Test 1 TRUE Test 1 10
24/05/2020 Test 1 TRUE Test 1 10
18/05/2020 Test 1 TRUE Test 2 10 19/05/2020
19/05/2020 Test 1 TRUE Test 2 10 19/05/2020
我之前成功使用过下面的代码,但这次我得到的是一个空白的 csv:
output_data = output_data.loc[output_data['termination_date'] > output_data['date']]
我相信这可能是因为 NaN 值,但我不确定。
有谁知道我可以对这行代码进行哪些更改以忽略这些值并提供我提到的输出?
提前非常感谢!
===编辑===
抱歉,看起来过滤器很好,但在这段代码之前,我使用以下脚本将所有终止日期转换为 NaN:
output['termination_date'] = pd.to_datetime(output_data['termination_date'], errors='coerce', format='%d/%m/%Y')
这是尝试将 terminate_date 设置为可用于过滤的时间戳,但 errors='coerce' 会将所有值转换为 NaN,因为没有它我会收到以下错误:
ValueError: time data '2019-07-30 00:00:00+00' does not match format '%d/%m/%Y' (match)
这是因为原始终止日期的格式为“yyyy-mm-dd hh:mm:ss+00”,所以我试图将其转换为与脚本其余部分相同的格式:“dd/mm/年年”。
所以我想现在的问题是,我怎样才能将原始日期转换为 dd/mm/yyyy,而不必传递 errors='coerce' ?
【问题讨论】:
标签: python python-3.x pandas filter nan