比较Excel文件中的当前时间?

时间:2018-03-21 20:03:58

标签: python excel pandas scheduled-tasks

我已经编写了一个程序,用于向客户端发送短信作为演示,没有发送实际文本。现在我需要程序在每天特定时间发送文本。我已经制作了一个包含所有客户名称的excel文件,何时需要发送短信以及运行我的每个程序所需的所有其他基本信息。我试图使用条件语句,基本上说当前时间是否与列#34; Med Time 1"中的日期匹配,然后运行我将发送文本以启动对话的第一个定义。我每次尝试任何东西时都会出现语法错误。这是我到目前为止没有编写我将运行的程序的所有代码,因为我无法通过条件语句。我尝试使用"当前日期"在Excel文件中添加一列。这也没有奏效。我被困了两个星期。

import pandas as pd
import datetime

#Assign spreadsheet filename
file = 'Uganda_Data.xlsx'

#Load spreadsheet
xl = pd.ExcelFile(file)

#Parse the first sheet
df = xl.parse('Sheet1')

# Medication
if datetime.datetime.now() == df[['Current date','Med Time 1']]

1 个答案:

答案 0 :(得分:0)

datetime.datetime.now()返回一个对象,其中包含日期(年,月,日,小时,分钟,秒,微秒)中的所有信息。

假设“now”是3/21/2018 6:10 PM并且你打电话(注意秒和微秒的精度):

>>> datetime.datetime.now()
datetime.datetime(2018, 3, 21, 18, 10, 05, 335514)

你同时编写并保存了这样一个excel文件(使用Currente Date函数=now()):

User    Current Date    Med Time 1
user 1  3/21/18 6:00 AM 3/21/18 17:29 AM
user 2  3/21/18 6:00 AM 4/21/18 4:00 AM
user 3  3/21/18 6:00 AM 4/5/18 5:00 PM

现在使用pandas.read_excel()(而不是pandas.ExcelFile)加载文件。

>>> import pandas as pd
>>> import datetime

>>> df = pd.read_excel('Uganda_Data.xlsx')
>>> df
     User        Current Date          Med Time 1
0  user 1 2018-03-21 06:00:00 2018-03-21 18:10:05
1  user 2 2018-03-21 06:00:00 2018-04-21 04:00:00
2  user 3 2018-03-21 06:00:00 2018-04-05 17:00:00

请注意,Med Time 1的{​​{1}}是另一种对象(时间戳,但不是 Datetime.Datetime

user 1

请注意,>>> df['Med Time 1'][0] Timestamp('2018-03-21 18:10:05') 处的Current Date是保存Excel文件时的日期\时间,永远不会等于您拨打df的时间。

所以,你应该转换日期,例如使用

datetime.datetime.now()

代码建议

>>> pd.Timestamp(datetime.datetime.now())
Timestamp('2018-03-21 18:40:42.639488')

注意:请注意import pandas as pd #Assign spreadsheet filename file = 'Uganda_Data.xlsx' #Load spreadsheet xl = pd.ExcelFile(file) #Parse the first sheet df = xl.parse('Sheet1') # Filter users that are on time to take the medicine df_now = df[df['Med Time 1'] == pd.Timestamp.now()] # Do something... for line in df_now: print("Call the user {}".format(df['Users'])) ... 中的内容。我的建议是你把时间保持为小时:分钟,没有秒和微秒。您应该编码(在必要时):

Med Time 1