检查一列中的值是否存在于另一数据框中的多列中

时间:2019-12-09 08:19:14

标签: python pandas

我正在尝试检查工作簿的“ DataLineID:”列中的值是否存在于另一个带有熊猫的工作簿的0或1列中。如果有匹配项,我想在其中添加名为match的新列。

我的代码是:

df_comparing = pd.read_excel(fName, sheet_name=0, index_col=None)

df_compare_basis = pd.read_excel(readxl, index_col=None) 

df_comparing['Match'] = df_comparing[df_comparing.columns[0,1]].isin(df_compare_basis['DataLineID:']).astpye(int)

我收到错误IndexError:数组索引过多

如果我将以下内容更改为df_comparing[df_comparing.columns[0]]  我得到AttributeError:“系列”对象没有属性“ astpye”

还有另一种方法可以实现这一目标吗?

编辑:

以下是一些示例数据:

df_comparing = ({'Line no':['AL5176', 'AL5737', 'AL5978'], 'Line addition':[NaN, NaN, NaN, 'AL9876', 'AL6789', 'AL5945']})

df_compare_basis = ({'DataLineID:':['AL5176', 'AL5737', 'AL5978','AL9876', 'AL6789', 'AL5945']})

多数民众赞成的输出:

df_comparing = ({'Line no':['AL5176', 'AL5737', 'AL5978'], 'Line addition':[NaN, NaN, NaN, 'AL9876', 'AL6789', 'AL5945'], 'Match':[1,1,1,1,1,1]})

1 个答案:

答案 0 :(得分:1)

我想这就是您要寻找的东西

import numpy as np
df_comparing['Match'] = np.where((df_comparing['Line no'].isin(df_compare_basis['DataLineID:'])) | (df_comparing['Line addition'].isin(df_compare_basis['DataLineID:'])), 1, 0)

  Line no Line addition  Match
0  AL5176           NaN      1
1  AL5737           NaN      1
2  AL5978           NaN      1
3     NaN        AL9876      1
4     NaN        AL6789      1
5     NaN        AL5945      1