Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将datetime中的数据帧列值与整数进行比较?_Python_Dataframe_Datetime - Fatal编程技术网

Python 是否将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

我有一个带有日期的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.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
python
if
语句不知道如何处理这个问题:是否应该运行
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