Python ';列表';对象没有属性';其中';正在尝试合并两个数据集

Python ';列表';对象没有属性';其中';正在尝试合并两个数据集,python,pandas,numpy,Python,Pandas,Numpy,我正在尝试合并两个数据集(df和new_-df),从一个(new_标签)到另一个(标签)获取信息 第一个数据集df包含所有列和数据: Label Username Look_up (Other columns ...) 59 1.0 vald21 val 67 1.0 2512 2512 67 0.0 faehr6542 faehr 。。。 75 1.0克莉丝汀·克里斯 122 0.0 starogm starog

我正在尝试合并两个数据集(df和new_-df),从一个(new_标签)到另一个(标签)获取信息

第一个数据集df包含所有列和数据:

    Label   Username    Look_up   (Other columns ...)
59  1.0     vald21      val
67  1.0     2512        2512
67  0.0     faehr6542   faehr
。。。 75 1.0克莉丝汀·克里斯 122 0.0 starogm starogm

new_-df
则通过过滤包含一些特定单词的行,来自
df

    Label  New_Label    Username    Look_up
59  1.0    True         vald21      val
67  1.0    True         2512        2512
75  1.0    True         Christine   Chris
我想用
new\u-df
中的新值替换df中
Label
中的旧值(在
new\u-Label
列下):
True
应对应于
0
False
对应于
1
。由于
new_df
是一个过滤数据集,因此数据集中
new_Label
列下的所有值都具有值
True
(即
标签中的
0

根据一位用户在此处给我的建议(),我应用了以下内容:

df2=pd.merge(df, new_df[['Username','New_Label']], on='Username', how='outer').assign(Label = lambda row:np.where(row['New_Label'].notnull(), 0, 1))
但我有一个错误:

/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in assign(self, **kwargs)
   3565 
   3566         for k, v in kwargs.items():
-> 3567             data[k] = com.apply_if_callable(v, data)
   3568         return data
   3569 

/anaconda3/lib/python3.7/site-packages/pandas/core/common.py in apply_if_callable(maybe_callable, obj, **kwargs)
    341 
    342     if callable(maybe_callable):
--> 343         return maybe_callable(obj, **kwargs)
    344 
    345     return maybe_callable

<ipython-input-233-fd59bc42a769> in <lambda>(row)
----> 1 df2=pd.merge(df, new_df[['Username','New_Label']], on='Username', how='outer').assign(Label = lambda row:np.where(row['New_Label'].notnull(), 0, 1))

AttributeError: 'list' object has no attribute 'where'
分配中的anaconda3/lib/python3.7/site-packages/pandas/core/frame.py(self,**kwargs) 3565 3566对于k,v,单位为kwargs.items(): ->3567数据[k]=com.apply\u如果可调用(v,数据) 3568返回数据 3569 /anaconda3/lib/python3.7/site-packages/pandas/core/common.py在可调用时应用(可能可调用,obj,**kwargs) 341 342如果可调用(可能可调用): -->343返回可调用(obj,**kwargs) 344 345返回可能需要呼叫 在行 ---->1 df2=pd.merge(df,new_df[['Username','new_Label']],on='Username',how='outer')。赋值(Label=lambda行:np.where(行['new_Label']].notnull(),0,1)) AttributeError:“list”对象没有属性“where”

您能帮我解决这个问题吗?

您能再次尝试导入
numpy

import numpy as np
df2 = pd.merge(df, new_df[['Username','New_Label']], on='Username', how='outer')
df2['Label'] = np.where(df2['New_Label'].notnull(), 0, 1))

看起来您已将
np
分配到您的codeNew_Label1 contain list中的某个列表中。非常感谢您。有没有办法避免这件事?该列表用于确定新的数据集(我有一个用户名列表,如果它们包含特定的单词,我会给它们分配一个真值)@BEN_YO:new_标签应该只包含真值或假值(实际上只包含真值,因为它被过滤以只包含真值)@still\u learning您能找到包含列表的行并显示给我们吗?@still\u learning然后将新标签更改为新标签