在多个过滤条件中插入一个范围
inserting a range within multiple filter criteria
我试图通过在睡眠分钟数和睡眠小时数上插入逻辑运算符来过滤掉小睡。但是,当我插入睡眠时间范围时,应用最小持续时间有效,代码 fails.The 'startsleep' 列是日期时间列的小时数的摘录。
我下面的代码哪里出错了?
date_delta efficiency has_sleep_data datauuid end_time start_time time_offset update_time create_time date weekday day month startsleep wakeup sleep_duration duration_mins powernaps weekend
0 0 92.663040 1.0 03f12ce0-9ade-5c74-9d57-686fd3966f2a 2018-03-08 05:30:00-04:00 2018-03-07 23:23:00-04:00 UTC-0400 2018-03-08 09:39:58.387000-04:00 2018-03-08 05:32:02.181000-04:00 2018-03-07 2 <built-in method date of datetime.datetime obj... 3 23 5 06:07:00 367.0 False False
1 1 87.788020 1.0 0419de25-ff8a-e425-0864-7e83b7f5d991 2018-02-25 09:28:00-04:00 2018-02-25 02:15:00-04:00 UTC-0400 2018-02-25 09:30:16.332000-04:00 2018-02-25 09:30:16.332000-04:00 2018-02-25 6 <built-in method date of datetime.datetime obj... 2 2 9 07:13:00 433.0 False True
2 2 90.026955 1.0 048b90e0-1e31-7875-337c-e9d8c24bea59 2018-06-02 06:49:00-03:00 2018-06-02 00:37:00-03:00 UTC-0300 2018-06-02 06:49:32.094000-03:00 2018-06-02 06:49:32.094000-03:00 2018-06-02 5 <built-in method date of datetime.datetime obj... 6 0 6 06:12:00 372.0 False True
我在下面添加第二个逻辑运算符时出错:
TypeError: 'Series' object is not callable
df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(10,23))]
df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(range(10,23)))]
我希望小睡仅 return 列,其中持续时间标准为 < 120 mins
并且开始睡眠时间为 10 小时 a.m。和 23 p.m.
当您尝试使用括号分割 pd.Series
时出现错误。您应该改用括号。我建议您阅读 Indexing and Selecting Data 以更好地理解如何在 pandas、
中建立索引
此外,您不能使用 range
进行切片,您必须使用下限和上限进行过滤,如:
df_sleep['powernaps']=(df_sleep.duration_mins < 120) &
(df_sleep.startsleep > 10) &
(df_sleep.startsleep < 23)
我试图通过在睡眠分钟数和睡眠小时数上插入逻辑运算符来过滤掉小睡。但是,当我插入睡眠时间范围时,应用最小持续时间有效,代码 fails.The 'startsleep' 列是日期时间列的小时数的摘录。 我下面的代码哪里出错了?
date_delta efficiency has_sleep_data datauuid end_time start_time time_offset update_time create_time date weekday day month startsleep wakeup sleep_duration duration_mins powernaps weekend
0 0 92.663040 1.0 03f12ce0-9ade-5c74-9d57-686fd3966f2a 2018-03-08 05:30:00-04:00 2018-03-07 23:23:00-04:00 UTC-0400 2018-03-08 09:39:58.387000-04:00 2018-03-08 05:32:02.181000-04:00 2018-03-07 2 <built-in method date of datetime.datetime obj... 3 23 5 06:07:00 367.0 False False
1 1 87.788020 1.0 0419de25-ff8a-e425-0864-7e83b7f5d991 2018-02-25 09:28:00-04:00 2018-02-25 02:15:00-04:00 UTC-0400 2018-02-25 09:30:16.332000-04:00 2018-02-25 09:30:16.332000-04:00 2018-02-25 6 <built-in method date of datetime.datetime obj... 2 2 9 07:13:00 433.0 False True
2 2 90.026955 1.0 048b90e0-1e31-7875-337c-e9d8c24bea59 2018-06-02 06:49:00-03:00 2018-06-02 00:37:00-03:00 UTC-0300 2018-06-02 06:49:32.094000-03:00 2018-06-02 06:49:32.094000-03:00 2018-06-02 5 <built-in method date of datetime.datetime obj... 6 0 6 06:12:00 372.0 False True
我在下面添加第二个逻辑运算符时出错:
TypeError: 'Series' object is not callable
df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(10,23))]
df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(range(10,23)))]
我希望小睡仅 return 列,其中持续时间标准为 < 120 mins
并且开始睡眠时间为 10 小时 a.m。和 23 p.m.
当您尝试使用括号分割 pd.Series
时出现错误。您应该改用括号。我建议您阅读 Indexing and Selecting Data 以更好地理解如何在 pandas、
此外,您不能使用 range
进行切片,您必须使用下限和上限进行过滤,如:
df_sleep['powernaps']=(df_sleep.duration_mins < 120) &
(df_sleep.startsleep > 10) &
(df_sleep.startsleep < 23)