微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据列A和B的内容创建X1-Xn列

如何解决根据列A和B的内容创建X1-Xn列

我有两个数据框:

df1

enter image description here

df2

enter image description here

并且需要根据df1df2['B']添加新列。 如果在此迭代中,A列中的行的内容包含来自B列中的行的文本,则在新列中写入1。如果不是,则为0。我们还从列B获取列的名称。通过下面的示例可能应该更清楚:

enter image description here

解决方法

您可以首先将每个值与df1.A进行比较,如下:

pd.DataFrame({val:(df1.A.str.contains(val)).map(int) for val in df2.B.unique()})

如果要将其与df1结合使用,只需使用pd.concat()

pd.concat([df1,pd.DataFrame({val:(df1.A.str.contains(val)).map(int) for val in df2.B.unique()})],axis =1)
,

尝试此操作,尝试在每行之后打印df以更好地理解它:

df = df1.merge(df2,on=['N'],how='left').fillna('0')
df = df.pivot(index=['N','A_x'],columns=['A_y'],values=['A_y']).fillna(0)
df.columns = df.columns.map('_'.join)
df = df.replace('\w+',1,regex=True)
df.reset_index(inplace=True)
df.columns = df.columns.str.replace('A_y_','',regex=True).str.replace('A_x','A')
df.drop(columns=['0'],inplace=True)
print(df)


   N        A  asd  asd asd  asdasd
0  1  asd asd    0        1       0
1  2      asd    1        0       0
2  3   asdasd    0        0       1
3  4      xcv    0        0       0
4  5   asdasd    0        0       0
,
defects = df2['B'].unique()
for i in defects:
    df1[i]= df1["A"].map(lambda x: "1" if i in x else "0")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。