我有一個已合并的 df,我想對其進行一些邏輯處理,以便從資料源中捕獲問題。
我想捕捉都閉上眼睛,當AREACODE的比賽,但T的做不成的情況 和當兩個AREACODE的,并在所有T的不要比賽。
這是過濾器之前的 merge_df 。
Name t_1 Areacode_1 t_2 Areacode_2
Jerry New Jersey 12674 Texas 12674
Elaine New York 98765 Alaska 78654
George New York 12345 New York 12345
有沒有辦法在一個過濾器中完成這一切?到目前為止,這是我所擁有的,但最好將其作為一行:
m = merged_df.loc[(merged_df['t_1'] != merged_df['t_2']) & (merged_df['Areacode_1'] == merged_df['Areacode_2']) ]
m2 = merged_df.loc[(merged_df['t_1'] != merged_df['t_2']) & (merged_df['Areacode_1'] != merged_df['Areacode_2']) ]
在過濾器 Id 之后,因為所有列都匹配,所以希望 George 被洗掉。
預期的合并_df:
Name t_1 Areacode_1 t_2 Areacode_2
Jerry New Jersey 12674 Texas 12674
Elaine New York 98765 Alaska 78654
uj5u.com熱心網友回復:
你可以這樣做:
import pandas as pd
merged_df = pd.DataFrame({'Name':['Jerry','Elaine','George'],
't_1':['New Jersey', 'New York','New York'],
'Areacode_1': [12674,98765,12345],
't_2':['Texas','Alaska','New York'],
'Areacode_2':[12674,78654,12345]})
filtered1 = merged_df.loc[~((merged_df.t_1 == merged_df.t_2) & (merged_df.Areacode_1 == merged_df.Areacode_2))]
display(filtered1)
filtered2 = merged_df.loc[(merged_df.t_1 != merged_df.t_2)]
display(filtered2)
需要注意的是filtered1顯示輸出一樣filtered2,是與您的“預期merged_df”。
兩者基本上都符合您的標準。
uj5u.com熱心網友回復:
我用 np.where 來解決這個問題。
merged_df2 = merged_df.assign(Filter = np.where((merged_df['Salesforce_Territory'] !=
merged_df['Snowflake Territory']) & (merged_df['Salesforce_Zip_Code'] != merged_df['Snowflake Zip']) |
((merged_df['Salesforce_Territory'] != merged_df['Snowflake Territory'])), True, False))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370825.html
上一篇:使用重復的重復值創建資料框
