Python 是否将datetime中的数据帧列值与整数进行比较?
我有一个带有日期的dataframe列(已转换为datetime格式)。现在我需要将列中的年份与数字进行比较,例如:Python 是否将datetime中的数据帧列值与整数进行比较?,python,dataframe,datetime,Python,Dataframe,Datetime,我有一个带有日期的dataframe列(已转换为datetime格式)。现在我需要将列中的年份与数字进行比较,例如: Date 01-02-2018 04-07-2016 09-09-2019 我想做一个比较: if dfA['Date'].dt.year == current: ## do something 有两个问题: 代码给了我这个错误 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.b
Date
01-02-2018
04-07-2016
09-09-2019
我想做一个比较:
if dfA['Date'].dt.year == current:
## do something
有两个问题:
代码给了我这个错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
该数字来自用户输入的名称current(我使用以下代码将current转换为int):
不确定它为什么会给我一个错误我假设您希望您的if子句计算为
True
如果dfA['Date']
中的任何年份等于当前
?
如果是,您可以执行以下操作:
if dfA['Date'].dt.year.eq(current).sum():
# do something
出现此错误的原因是语句dfA['Date'].dt.year==current是一组布尔值,而不是一个布尔值:
dfA['Date'].dt.year == 2018
# 0 True
# 1 False
# 2 False
# Name: Date, dtype: bool
pythonif
语句不知道如何处理这个问题:是否应该运行if
语句下的代码块,因为本系列中的任何值都是true?或者它不应该运行,因为不是所有的值都是真的?或者它应该运行,因为序列本身不是假值,比如None
或零?意图不明确,因此存在错误
如果您想对满足您所指定的标准的所有列执行DATAFRAM操作,请考虑使用。您制作的序列可用于选择数据帧的某些行,如下所示:
dfA['example'] = 100
is_matching_year = dfA['Date'].dt.year == 2018
dfA.loc[is_matching_year, 'example'] *= 2
print(dfA[['Date', 'example']])
# Date example
# 0 2018-01-02 200
# 1 2016-04-07 100
# 2 2019-09-09 100
如果我想说小一点呢?@BrunnaT。然后,如果dfA['Date'].dt.year.le(当前+1.sum():,则可以执行
。如果任何年份小于当前年份,则该值将评估为真
dfA['Date'].dt.year == 2018
# 0 True
# 1 False
# 2 False
# Name: Date, dtype: bool
dfA['example'] = 100
is_matching_year = dfA['Date'].dt.year == 2018
dfA.loc[is_matching_year, 'example'] *= 2
print(dfA[['Date', 'example']])
# Date example
# 0 2018-01-02 200
# 1 2016-04-07 100
# 2 2019-09-09 100