[英]Pandas compare multiple columns to a specific column in a dataframe
我有一個這樣的數據框:
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_ID
是列使用DataFrame.eq
,您也可以將所有列與第一個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
只是一個嘗試。 @jezrael 的解決方案更好
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.