python - pandas 在 2.7 和 3.6 上应用功能
问题描述
我在 python 2.7 中有一个程序试图将其更新到 python 3.6。
我在功能上发现了一个困难df.apply
旧 python 2.7 代码:
date_cols = ['hour', 'begin_date', 'end_date']
df = df[df[date_cols].apply(_in_daterange, axis=1)]
我尝试在 python 3.6 代码中执行的操作:
df = df[df[date_cols].apply(_in_daterange, axis=1)]
返回错误variables missing
因此,我在 python 3.6 上尝试了这个:
df = df[df[date_cols].apply(lambda row: _in_daterange(row['hour'],row['begin_date'], row['end_date']), axis=1)]
但它不会给我相同的输出。
# Function in_date_range
def in_daterange( date: datetime, start, end):
""" Checks a give date is in the range of two dates """
if isinstance(start, datetime) and isinstance(end, datetime):
return date >= start and date < end
else:
return False
数据框的样子:
hour begin_date end_date
0 2018-01-01 00:00:00 NaT NaT
1 2018-01-01 00:00:00 2018-01-02 11:29:00 2018-01-02 13:00:00
2 2018-01-01 00:00:00 NaT NaT
3 2018-01-01 00:00:00 NaT NaT
4 2018-01-01 00:00:00 NaT NaT
5 2018-01-01 00:00:00 NaT NaT
6 2018-01-01 00:00:00 NaT NaT
7 2018-01-01 00:00:00 NaT NaT
8 2018-01-01 00:00:00 2018-01-02 11:29:00 2018-01-02 13:00:00
hour
之前生成以获得给定两个日期的小时范围。然后我执行合并以获取事件发生的时间
旧程序:
- 蟒蛇2.7
- 熊猫 0.18
新节目:
- 蟒蛇3.6
- 熊猫 0.23
解决方案
推荐阅读
- c# - 如何在 PropertyGrid 中显示文件名列表
- python - 在 on_start 方法中访问 kivy 屏幕 ID
- sql - 仅当每行 2 列相等时才选择行
- amazon-web-services - AWS Comprehend + Pyspark UDF = 错误:无法腌制 SSLContext 对象
- java - 使用 Java 调用 C# ASP.net web api 的 Android 工作室
- ios - Ipad 上 swiftUI 中工作表的显示不一致
- python - 我可以使用 BeautifulSoup / Selenium 勾选复选框吗?
- javascript - 使用 Express JS 路由中的 Socket.io
- java - 无法为扩展“应用程序”设置未知属性“mainClass”
- c++ - 如何从cpp中的函数返回自定义类对象?