Python ';列表';对象没有属性';其中';正在尝试合并两个数据集
我正在尝试合并两个数据集(df和new_-df),从一个(new_标签)到另一个(标签)获取信息 第一个数据集df包含所有列和数据: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
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然后将新标签更改为新标签