我正在尝试向我的dataframe添加一个功能列,并按月和年将其与我现有的dataframe行进行匹配(我已将其存储在整数列中)。
我尝试使用.iloc[]
指定行来添加新的特性变量df['Price Level']
,该变量取自i_df['CPIAUCNS']
,但在阅读了大量Stack Overflow之后,np.where
似乎更适合条件语句。
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()
会导致以下错误:
---------------------------------------------------------------------------
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
发布于 2019-04-17 08:32:22
根据Teddy的回答,我最终成功地使用了以下merge语句:
df = df.merge(i_df[['Release Date Year', 'Release Date Month','CPIAUCNS']],
how='left', on=['Release Date Year', 'Release Date Month'])
我最终在我的数据框中使用了CPIAUCNS
,这是我的目标。谢谢,泰迪!
然而,我仍然不理解我的初始bool_filter的问题。
https://stackoverflow.com/questions/55717832
复制相似问题