首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的布尔条件生成一个'ValueError:只能比较相同标签的系列对象‘?

为什么我的布尔条件生成一个'ValueError:只能比较相同标签的系列对象‘?
EN

Stack Overflow用户
提问于 2019-04-17 07:22:14
回答 1查看 49关注 0票数 1

我正在尝试向我的dataframe添加一个功能列,并按月和年将其与我现有的dataframe行进行匹配(我已将其存储在整数列中)。

我尝试使用.iloc[]指定行来添加新的特性变量df['Price Level'],该变量取自i_df['CPIAUCNS'],但在阅读了大量Stack Overflow之后,np.where似乎更适合条件语句。

代码语言:javascript
复制
bool_filter = ((df['Release Date Year'] == i_df['Release Date Year']) 
               & (df['Release Date Month'] == i_df['Release Date Month']))

df['Price Level'] = np.where(bool_filter, i_df['CPIAUCNS'])

我希望这将在df中生成一个新的feature列,其中的值来自i_df,其中年和月是相等的,而我收到的是:

ValueError: Can only compare identically-labeled Series objects

这个错误是在bool_filter中抛出的,因此np.where无法执行。

有没有人能解释一下为什么这个条件语句会产生这个错误,以及我是如何重新表述它的?

编辑:

尝试在布尔筛选器中使用.values()会导致以下错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-34-9b470b5aee2c> in <module>()
      5 # df[df['Release Date'].isna() == True]
      6 
----> 7 bool_filter = ((df['Release Date Year'].values() == i_df['Release Date Year'].values()) 
      8                & (df['Release Date Month'].values() == i_df['Release Date Month'].values()))
      9 

TypeError: 'numpy.ndarray' object is not callable
EN

回答 1

Stack Overflow用户

发布于 2019-04-17 08:32:22

根据Teddy的回答,我最终成功地使用了以下merge语句:

代码语言:javascript
复制
df = df.merge(i_df[['Release Date Year', 'Release Date Month','CPIAUCNS']], 
              how='left', on=['Release Date Year', 'Release Date Month'])

我最终在我的数据框中使用了CPIAUCNS,这是我的目标。谢谢,泰迪!

然而,我仍然不理解我的初始bool_filter的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55717832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档