检查一列中的值是否存在于另一个datafram的多个列中

2024-06-26 14:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检查一个工作簿的“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:“Series”对象没有属性“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]})

Tags: dfreadlinebasisnancomparepdcomparing
1条回答
网友
1楼 · 发布于 2024-06-26 14:43:56

我想这就是你想要的:

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

相关问题 更多 >