【问题标题】:Value error when populating a new column in a dataframe based on conditional values根据条件值在数据框中填充新列时出现值错误
【发布时间】:2020-01-06 14:40:51
【问题描述】:

我正在尝试编写一个函数,该函数将根据同一 dataframe ('cnms_df') 中另一列中的值填充一个名为 'BS_Trigger' 的新列。

today = datetime.datetime.today().strftime('%Y%m%d')
....
def bs_trigger(dataframe):
    dataframe['BS_Trigger'] = np.where((dataframe['PRELIM_DATE'] != None) and (dataframe['PRELIM_DATE'] <= today), "Yes", "No")

bs_trigger(cnms_df)

使用上面的代码,我不断收到一个值错误:

ValueError:Series 的真值不明确。使用a.empty, a.bool()、a.item()、a.any() 或 a.all()。

我在这里做错了什么? 注意: 如果 `cnms_df['PRELIM_DATE'][i] = None' ,则该值为 NoneType,而不是字符串 ***

【问题讨论】:

  • 使用位运算符 & 代替逻辑运算符 and。

标签: python-3.x pandas dataframe conditional-statements


【解决方案1】:

尝试替换:

dataframe['BS_Trigger'] = np.where((dataframe['PRELIM_DATE'] != None) and (dataframe['PRELIM_DATE'] <= today), "Yes", "No")

与:

dataframe["BS_Trigger"]="No"
dataframe.BS_Trigger[(dataframe['PRELIM_DATE'] != None) & (dataframe['PRELIM_DATE'] <= today)]= "Yes"

【讨论】:

  • 是的,用位运算符替换它就可以了。谢谢,
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2013-02-12
相关资源
最近更新 更多