Python 熊猫将多列与数据帧中的特定列进行比较

Python 熊猫将多列与数据帧中的特定列进行比较,python,pandas,Python,Pandas,我有这样一个数据框: Product_ID Store_1_qty Store_2_qty Store_3_qty A 10 20 10 B 10 10 10 C 10 10 20 如果列Store_2_qty、Store_3_qty都等于Store_1_qty,我想再添加一列,显示“true”或“false”。但是,有时会添加额外的

我有这样一个数据框:

Product_ID Store_1_qty Store_2_qty Store_3_qty
A          10          20          10
B          10          10          10
C          10          10          20
如果列Store_2_qty、Store_3_qty都等于Store_1_qty,我想再添加一列,显示“true”或“false”。但是,有时会添加额外的列,如Store_4_qty、Store_5_qty,我需要再次将所有列与Store_1_qty进行比较

我尝试了这个,但在最后一列中返回的都是False

result['match'] = np.where(result.iloc[:, 1] == result.iloc[:, :1].all(1), 'True', 'False')

如果
Product\u ID
是列使用,您还可以将所有列与第一列
Store
列进行比较:

result['match'] = (result.iloc[:, 1:].eq(result.iloc[:, 1], axis=0)).all(1) 

如果我理解正确,您需要做的就是测试df条目的唯一性:

# Assuming Product_ID is NOT your index:
df['match'] = df.iloc[:,2:].nunique(axis=1) == 1

# If Product_ID is your index it simplifies to:
df['match'] = df.nunique(axis=1) == 1
结果:

  Product_ID  Store_1_qty  Store_2_qty  Store_3_qty  match
0          A           10           20           10  False
1          B           10           10           10   True
2          C           10           10           20  False

只是一次尝试@耶斯雷尔的解决方案更好

df['match'] = df[['Store_2_qty', 'Store_3_qty']].eq(df['Store_1_qty'],axis=0).all(1)
输出:

  Product_ID  Store_1_qty  Store_2_qty  Store_3_qty  match
0          A           10           20           10  False
1          B           10           10           10   True
2          C           10           10           20  False

result['match']=(result.iloc[:,1:].eq(result.iloc[:,1],axis=0))。所有(1)
都为我工作。非常感谢。实际上,在我的例子中,其他列(如store_4_Quantity、5、6等)可以根据数据添加,这就是为什么我需要能够比较所有列的东西,而无需编辑代码。完全理解。这就是为什么我提到@jezrael的解决方案更好