我正在尝试连接两个数据框,并从右表中获取列并在左表中填充。
如果我直接加入,它将仅获取匹配项的数据,但很少有行在“ col1”中包含多个值, 因此它与值不匹配。有没有更好的方法来查找单元格中的两个项目并通过串联返回匹配的项目?
下面是表1。
下面是表格2
它应该加入表1中“ Col3”中标记为“是”的项目,并获得如下结果。
谢谢。
答案 0 :(得分:1)
听起来像是要进行迭代操作
它是这样的
如果没有先清理数据,我看不到其他方法。我用临时数据制作了一个样本。 建议您将数据另存为csv文件,然后将其上传到pastebin或下一次上传
$num
哪个给
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'col1':['A,B','C','D'],'col2':[1,2,3],'col3':['Yes','Yes','No']})
df2 = pd.DataFrame({'col1':['A','B','C','D'],'col2':[1,1,2,3],'col4':['Bla','Foo','Sup','Asdf']})
_col4 = pd.Series()
for _row in df1.itertuples():
if _row.col3=='Yes':
_col4.loc[_row.Index] = ', '.join(
df2[(df2['col1'].isin(_row.col1.split(',')))
&(df2['col2']==_row.col2)]['col4'].tolist()
)
df1['col4'] = _col4
- 根据下面的评论进行编辑