Python 尝试筛选数据帧中的行的NaN值
在数据帧上运行此代码时,我得到的是NaN值:Python 尝试筛选数据帧中的行的NaN值,python,pandas,Python,Pandas,在数据帧上运行此代码时,我得到的是NaN值: df['Text'] =df[en_df_low['sent'].str.contains('|'.join(list_1), case=False) & df['sent'].str.contains('|'.join(list_2), case=False)] 此代码应该做的是将值1分配给一个新列,Text,每个行至少包含list_1中的一个单词和list_2中的至少一个单词;否则为0 这意味着如果我有 sent home light
df['Text'] =df[en_df_low['sent'].str.contains('|'.join(list_1), case=False) & df['sent'].str.contains('|'.join(list_2), case=False)]
此代码应该做的是将值1分配给一个新列,Text
,每个行至少包含list_1
中的一个单词和list_2
中的至少一个单词;否则为0
这意味着如果我有
sent
home light sun sunshine
car park home
home light
sun car park
名单如下:
list_1=["home", "sun"]
list_2=["light"]
我应该
sent Text
home light sun sunshine 1
car park home 0
home light 1
sun car park 0
不幸的是,我得到了:
sent Text
home light sun sunshine NaN
car park home NaN
home light NaN
sun car park NaN
所以我的代码有点问题。有
df[]
指定的布尔索引,所以失败了。您只需指定掩码并通过以下方式转换为1,0
:
在您的解决方案中删除df[]
:
df['Text'] =df[en_df_low['sent'].str.contains('|'.join(list_1), case=False) & df['sent'].str.contains('|'.join(list_2), case=False)]
^^^^^^ ^^^^^^
要添加()。视图('i1')
:
这和我以前遇到的问题是一样的,耶斯雷尔。我有一个未更新的熊猫版本,因此视图不可用work@LucaDiMauro-是的,同意。有没有办法在不升级我的版本的情况下修复它?@LucaDiMauro-我认为问题不在版本中,而是删除
[]
谢谢jezrael。拆下后,效果良好。谢谢
df['Text'] =df[en_df_low['sent'].str.contains('|'.join(list_1), case=False) & df['sent'].str.contains('|'.join(list_2), case=False)]
^^^^^^ ^^^^^^
df['Text'] = (en_df_low['sent'].str.contains('|'.join(list_1), case=False) & df['sent'].str.contains('|'.join(list_2), case=False)).view('i1')
^^^^^^ ^^^^^^