Python 将数据框中的日期与当前日期进行比较

Python 将数据框中的日期与当前日期进行比较,python,pandas,Python,Pandas,我目前正在尝试编写一个脚本,在某一天执行特定的操作。例如,如果今天是2019年6月30日,在我的数据框中有一个2019年6月30日的条目,那么xyz将继续发生。但是,我在比较数据帧中的日期和日期时间日期时遇到问题。下面是我如何创建数据帧的 now = datetime.datetime.now() Test1 = pd.read_excel(r"some path") 下面是打印数据帧时的输出 symbol ... phase 0 MDCO ..

我目前正在尝试编写一个脚本,在某一天执行特定的操作。例如,如果今天是2019年6月30日,在我的数据框中有一个2019年6月30日的条目,那么xyz将继续发生。但是,我在比较数据帧中的日期和日期时间日期时遇到问题。下面是我如何创建数据帧的

now = datetime.datetime.now()

Test1 = pd.read_excel(r"some path")
下面是打印数据帧时的输出

  symbol  ...                  phase
0   MDCO  ...                Phase 2
1   FTSV  ...              Phase 1/2
2    NVO  ...                Phase 2
3    PFE  ...  PDUFA priority review
4   ATRA  ...                Phase 1
以下是“事件日期”列的打印方式

0    05/18/2019
1    06/30/2019
2    06/30/2019
3    06/11/2019
4    06/29/2019
所以我尝试了一些在其他线程中看到的东西。 我试过:

if (Test1['event_date'] == now):
    print('True')
返回

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我已尝试使用以下方法重新格式化数据:

column_A = datetime.strptime(Test1['event_date'], '%m %d %y').date()
哪个返回这个

TypeError: strptime() argument 1 must be str, not Series
我试过这个

   if any(Test1.loc(Test1['event_date'])) == now:
这就返回了这个

TypeError: 'Series' objects are mutable, thus they cannot be hashed
我不知道为什么python告诉我str是一个数据帧,我假设它与python如何从excel工作表导出数据有关。我不知道如何解决这个问题

我只是想让python检查是否有任何行具有与当前日期相同的
“event\u date”
值,并返回索引或返回要在循环中使用的布尔值

import pandas as pd
import time 

# keep only y,m,d, and throw out the rest:
now =  (time.strftime("%Y/%m/%d"))

# the column in the dataframe needs to be converted to datetime first.
df['event_date'] = pd.to_datetime(df['event_date'])

# to return indices
df[df['event_date']==now].index.values

# if you want to loop, you can do:
for ix, row in df.iterrows():
    if row['event_date'] == now:
        print(ix)
我建议根据同一列中的匹配情况在列中执行xy或所需操作。i、 e

df.loc[df['event_date']==da,'column name']=df['x']+df['y']


比循环更容易。

尝试:
df['Your Date column']=pd.to\u datetime(df['Your Date column']
然后比较
str
datetime日期。为什么比循环更容易?for循环将一次又一次地检查条件。但这里基本上是选择行并给出列/值的公式,我假设将为符合条件的行生成列/值。与for循环相比,循环将花费大量时间赋值。如果我计划无限期地运行它,那会不会造成列的混乱?无限期地运行?我认为最好发布一个新问题,因为我无法理解用例。我想更好地澄清一下,我希望每天运行一次代码。这是我发布的第一句话。编辑:无限期只是一个极端例如,我不知道什么时候我会停止我的实验。也谢谢你的帮助。我最终用iTerrows完成了这项工作。
import datetime
import pandas as pd

da = str(datetime.datetime.now().date())
# converting the column to datetime, you can check the dtype of the column by doing
# df['event_date'].dtypes
df['event_date'] = pd.to_datetime(df['event_date'])    

# generate a df with rows where there is a match
df_co = df.loc[df['event_date'] == da]