我试图过滤以下df:
datetemp | gamenum |score
2019-6-2 123 2
2019-4-5 314 4
2019-5-11 344 2
2019-4-29 324 1
2019-2-28 325 9
2019-1-30 231 7我试着做以下几件事,这似乎应该是可行的:
import datetime
dateone = datetime.date(2019, 4, 1)
datetwo = datetime.date(2019, 6, 12)
df_filted_by_date = df[[(df['DATE_temp'] >= dateone and df['DATE_temp'] <= datetwo )]]
df_filted_by_date它应该返回:
datetemp | gamenum |score
2019-6-2 123 2
2019-4-5 314 4
2019-5-11 344 2
2019-4-29 324 1但是,根据对上面代码所做的小调整,我得到了多个错误。我觉得上面的话应该管用。关于如何解决上述问题,有什么建议吗?
发布于 2019-06-16 22:47:05
我不得不改变一些事情。
1)更改我生成日期值的方式:
import datetime
dateone = datetime.datetime(2019, 4, 1)
datetwo = datetime.datetime(2019, 6, 12)2)我给熊猫的约会时间增加了一个新的步骤:
df["datecol"] = pd.to_datetime(df["datecol"])3)利用loc进行熊猫过滤
df_filted_by_date = df.loc[(df.datecol>= dateone) & (df.datecol<= datetwo)]完整代码如下所示:
import datetime
dateone = datetime.datetime(2019, 4, 1)
datetwo = datetime.datetime(2019, 6, 12)
df["datecol"] = pd.to_datetime(df["datecol"])
df_filted_by_date = df.loc[(df.datecol>= dateone) & (df.datecol<= datetwo)]发布于 2019-06-15 19:05:48
编辑-
转换为日期时间格式
df["DATE_temp"] = pd.to_datetime(df["DATE_temp"])请用-
df_filted_by_date = df.loc[(df.DATE_temp>= dateone) & (df.DATE_temp<= datetwo)]而不是
df_filted_by_date = df[[(df['DATE_temp'] >= dateone and df['DATE_temp'] <= datetwo )]]你只是错过了熊猫使用操作人员的命令。需要在括号中传递这两个比较,然后应用和(&)。
发布于 2019-06-15 19:28:18
您可以使用DatetimeIndex切片:
df.index = pd.to_datetime(df.index) # need to convert into DatetimeIndex
df_filted_by_date = df['2019-04-01':'2019-06-12']https://stackoverflow.com/questions/56613243
复制相似问题