我已经编写了一个程序,用于向客户端发送短信作为演示,没有发送实际文本。现在我需要程序在每天特定时间发送文本。我已经制作了一个包含所有客户名称的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']]
答案 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