我正在尝试检查工作簿的“ 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]})
答案 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