python - 使用函数时日期时间的 Pandas 数据框问题
问题描述
我正在使用两个函数来过滤掉一些值,例如删除空值。这些函数似乎工作正常,但在某些时候将列转换为日期类型存在问题。它有效,但不完全有效。
在这里,我将第一个函数值传递给第二个函数,因为第二个函数需要返回值作为它的参数
当我打印函数的结果时。我得到以下信息:
print(is_string_date_in_right_format(remove_null(df)))
# returns a table with
id , color , date (in string format)
1 , red , '05/01/2012'
-- here i am converting the 3rd column to datetime
date_conv = is_string_date_in_right_format(remove_null(df))['date'] = pd.to_datetime(is_string_date_in_right_format(remove_null(df))["date"])
print(date_conv) # shows all the dates converted to DateTime (which is what I want)
results:
2021-05-01
2021-01-01
and so on.....
但是,当我尝试通过根据时间范围选择数据来进行比较时,它不会像我运行上面的打印语句时那样向我显示 DateTime 的数据,因为下面的代码也不起作用。我正在尝试以下操作:
我尝试在下面的第二行代码中直接使用变量 date_conv 但它抛出了“关键错误”
date_convert = print(is_string_date_in_right_format(remove_null(df)))
required_id = (date_convert['date'] >= date1) & (date_convert['date'] <= date_2)
new_d = date_convert[required_id]
print(new_d) # shows me no results it says empty data frame
-- 日期 1 和日期 2 的格式为 2021-04-19(与上面的打印语句相同)
解决方案
正如有人已经提到的,不要将结果分配给print()
变量。您期待一个 DataFrame,因此分配语句应该返回一个。否则,您将KeyError
在以下句子中得到 a,因为date_convert
它没有任何值或不是预期的格式。
通过做这个:
date_convert = print(is_string_date_in_right_format(remove_null(df)))
date_convert
将NoneType
。
此外,一个名为的函数is_...
让人认为该函数返回的是布尔值而不是 DataFrame。我建议您更改函数名称以避免混淆。
推荐阅读
- php - 如何以 JSON 格式转换两个数组值
- compilation - 使用 ESLint 解析时如何判断注释是描述性注释还是注释掉的代码
- python - 我已经使用 BLE GATT 服务器从树莓派广播传感器值。但我不明白我是如何在本地电脑或笔记本电脑上接收这些数据的?
- java - Java Concurrent-机场模拟
- kotlin - runBlocking 是否应该仅用于测试和主要功能?
- azure - 使用当前管道中运行的先前管道的输出
- azure-data-factory - 在 Blob 文件的标题上添加双引号
- spring - 在 Spring Batch 中找不到 JobParameters
- javascript - 如何在表格中渲染多个Base64图像
- grpc - 将 grpc 升级到使用 TargetFrameworkVersion 4.8 的 v 2.33.1 时出现“Grpc.Core.RpcException”类型的异常