通过拆分值来连接熊猫数据框,并通过串联获取结果

时间:2019-11-28 05:44:21

标签: python regex pandas join

我正在尝试连接两个数据框,并从右表中获取列并在左表中填充。

如果我直接加入,它将仅获取匹配项的数据,但很少有行在“ col1”中包含多个值, 因此它与值不匹配。有没有更好的方法来查找单元格中的两个项目并通过串联返回匹配的项目?

下面是表1。

enter image description here

下面是表格2

enter image description here

它应该加入表1中“ Col3”中标记为“是”的项目,并获得如下结果。

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:1)

听起来像是要进行迭代操作

它是这样的

  1. 遍历第一个DataFrame的行
  2. 使用.isin操作查询第二个DataFrame col1(对于col2使用常规==)
  3. 将结果条目添加到熊猫系列
  4. 将pandas系列分配给您的第一个DataFrame

如果没有先清理数据,我看不到其他方法。我用临时数据制作了一个样本。 建议您将数据另存为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

- 根据下面的评论进行编辑