无法将字符串列表与日期时间对象进行比较

时间:2019-10-21 19:31:36

标签: python pandas datetime gspread

我从Google工作表导入了一个工作表,该工作表恰好在['Timestamp']列中具有字符串格式的时间戳。为了通过比较过滤日期并选择一些行,我创建了一个变量,该变量采用今天的日期(diaHoy),而另一个取自前一天(diaAyer)

然后,我尝试应用一个将diaHoy和diaAyer与每个时间戳元素进行比较的掩码,但是我不能这样做,因为diaHoy和diaAyer是datetime元素,并且每个时间戳单元格都是一个字符串。我尝试将strptime应用于['Timestamp']列,但因为它是一个列表而无法这样做

样本数据:

df = pd.DataFrame ({'16/10/2019 14:56:36':['A','B'],'21/10/2019 14:56:36':['C','D'],'21/10/2019 14:56:36':['E','F']

diaHoy = 2019/10/21

diaAyer = 2019/10/20

import pandas as pd

diaHoy = datetime.today().date()
diaAyer = diaHoy + timedelta(days = -1)


wks1 = gc.open_by_url("CODE_URL").sheet1
df1 = wks1.get_all_values()
df1.pop(0)
mask1 = (df1 > diaAyer) & (df1 <= diaHoy)
pegado1 = df1.loc[mask1]

我希望通过与diaHoy和diaAyer进行比较,掩码可以按第一列中的日期过滤出行。

过滤器:介于21/10/2019和20/10/2019

预期结果:

df = pd.DataFrame ({'21/10/2019 14:56:36':['C','D'],'21/10/2019 14:56:36':['E','F']

1 个答案:

答案 0 :(得分:0)

您可以将时间戳字符串的元组转换为日期时间对象的列表:

import pandas as pd 
df2 = pd.DataFrame({pd.to_datetime(key):df[key] for key in df})