按时间段对数据帧进行排序; datetime64[ns]
Sorting data frame by time period; datetime64[ns]
我在总结一个专栏时遇到了另一个问题
(Python - Pandas)
我有一个“新”数据框,其中包含 5 天的日期。
'Dates' 列的类型是 datetime64[ns]。
我尝试按日期过滤数据框,例如“2021-10-10 和 2021-10-15 之间的所有值”或“2021-10-14 之后的所有值”等。
无论我尝试什么,我都会收到错误消息。
开始于:
mask = (new['Date'] > '2021-10-10') & (df['Date'] <= '2021-10-15')
我得到:
TypeError: '<=' not supported between instances of 'date time.date' and 'str'
出现这个错误后,我尝试按照建议转换切片
“问题是你想使用字符串 '2017-07-07' 进行切片,而你的索引是日期类型 time.date。你的切片也应该是这种类型。
您可以按如下方式定义开始日期和结束日期:
import pandas as pd
startdate = pd. to_datetime("2017-7-7").date()
enddate = pd. to_datetime("2017-7-10").date()
df.loc[startdate:enddate]
(我当然删除了空格)
但现在我得到
TypeError: '<' not supported between instances of 'int' and 'date time.date'
我只想按不同的时间段对我的数据框进行排序和过滤。
感谢您的帮助
为了确保所有内容都采用相同的格式,请使用 pd.to_datetime()
并使用 infer_datetime_format=True
有助于格式化并加快函数运行速度:
df['Date'] = pd.to_datetime(df['Date'],infer_datetime_format=True)
df = df[(df['Date'] > pd.to_datetime('2021-10-10')) & (df['Date'] <= pd.to_datetime('2021-10-15'))]
我在总结一个专栏时遇到了另一个问题 (Python - Pandas)
我有一个“新”数据框,其中包含 5 天的日期。 'Dates' 列的类型是 datetime64[ns]。 我尝试按日期过滤数据框,例如“2021-10-10 和 2021-10-15 之间的所有值”或“2021-10-14 之后的所有值”等。 无论我尝试什么,我都会收到错误消息。 开始于:
mask = (new['Date'] > '2021-10-10') & (df['Date'] <= '2021-10-15')
我得到:
TypeError: '<=' not supported between instances of 'date time.date' and 'str'
出现这个错误后,我尝试按照建议转换切片 “问题是你想使用字符串 '2017-07-07' 进行切片,而你的索引是日期类型 time.date。你的切片也应该是这种类型。 您可以按如下方式定义开始日期和结束日期:
import pandas as pd
startdate = pd. to_datetime("2017-7-7").date()
enddate = pd. to_datetime("2017-7-10").date()
df.loc[startdate:enddate]
(我当然删除了空格) 但现在我得到
TypeError: '<' not supported between instances of 'int' and 'date time.date'
我只想按不同的时间段对我的数据框进行排序和过滤。 感谢您的帮助
为了确保所有内容都采用相同的格式,请使用 pd.to_datetime()
并使用 infer_datetime_format=True
有助于格式化并加快函数运行速度:
df['Date'] = pd.to_datetime(df['Date'],infer_datetime_format=True)
df = df[(df['Date'] > pd.to_datetime('2021-10-10')) & (df['Date'] <= pd.to_datetime('2021-10-15'))]