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的解决方案更好