【发布时间】:2015-11-04 15:13:05
【问题描述】:
我有一个要加载到数据框中的 csv。我只需要Organization 列包含目标字符串affiliation 的行。
当我尝试使用str.contains() 时,我得到ValueError: cannot index with vector containing NA / NaN values。
我查看了 Value Error when Slicing in Pandas 和 pandas + dataframe - select by partial string 以及以下对我都有效的解决方案:
df = df[df['Organization'].str.contains(affiliation)==True]
或
df = df[df['Organization'].str.contains(affiliation).fillna(False)]
但是,作为测试,我这样做了:
print(len(df)) #99228
df = df[pd.notnull(df['Organization'])] #or df = df.dropna(subset=['Organization'])
print(len(df)) #99228
df = df[df['Organization'].str.contains(affiliation).fillna(False)]
print(len(df)) #1605
我的问题是:没有==True 或fillna(False) 附加到str.contains() 的ValueError 似乎暗示Organization 列有NaNs。但是,为什么在只保留非空 Organization 行之后我会得到相同大小的 df 呢?我在这里错过了什么?
谢谢!
【问题讨论】: