我正在尝试过滤以下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
但是,根据上面代码的细微调整,我遇到了多个错误。感觉上面的应该工作。关于如何解决以上问题的任何提示?
答案 0 :(得分:1)
编辑-
转换为日期时间格式
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 )]]
您只是错过了熊猫使用运算符的顺序。需要通过括号中的两个比较,然后应用AND(&)。
答案 1 :(得分:1)
您可以使用DatetimeIndex切片:
df.index = pd.to_datetime(df.index) # need to convert into DatetimeIndex
df_filted_by_date = df['2019-04-01':'2019-06-12']
答案 2 :(得分:0)
我不得不改变一些事情。
1)更改我设置日期值的方式:
AssociativeCache
2)我添加了一个新的步骤来隐藏大熊猫的日期时间:
public
3)使用AssociativeCacheDynamic
的熊猫过滤器:
import datetime
dateone = datetime.datetime(2019, 4, 1)
datetwo = datetime.datetime(2019, 6, 12)
完整代码如下:
df["datecol"] = pd.to_datetime(df["datecol"])