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