我剛在stackoverflow上花了一個小時尋找類似的問題,所以請原諒,如果這已被問及之前,我沒有找到它。Python熊貓標記匹配一個數據幀中的列到另一個數據幀中的列的值
我有以下的數據幀DF:
Id | Category | Subcategory | Count | Flag | Phone_number
1 A aa 4534 Y 222-444-3333
2 B bb 4807 Y 3335557777
3 C cc 8978 222-444-3333
4 D dd 9874 333-555-7777
5 E ee 3187 555-666-8888
6 F ff 8573 5556668888
列 「標誌」 表示建立不正確的記錄。現在我需要標記/突出顯示所有具有相同電話號碼的記錄,即使它們沒有標記。
首先,我需要從電話號碼中取出所有「 - 」,因爲它已經由用戶輸入。
df['Phone_number'] = df['Phone_number'].str.replace('-', '')
(不知道這是最好的辦法)
接下來,我想不出更好的方式來處理它,然後創建的DF與Y標誌,並沒有在Y標誌記錄的新。
new_df = df.loc[df['Flag'] == 'Y']
df_withoutY = df.loc[df['Flag'] != 'Y']
但現在我卡住了。如何比較/匹配df_withoutY中的電話號碼,如果它存在於new_df中,則添加一個新的列「不正確」=「Y」。
我在想這樣的事情,但得到了所有的錯誤。
df_withoutY['Phone_number'].isin(new_df['Phone_number'])
這並沒有在所有的工作:
df_withoutY['incorrect'] = np.where((df_withoutY['Phone_number'].isin(new_df['Phone_number'])) == True, "Y" " ")
TypeError: invalid type comparison
不知道,如果這是有益的,但在Excel中,我會由拆分旗兩成兩個單獨的選項卡,然後使用匹配功能。
=MATCH(df_withoutY!AK2,new_df!AK$2:AK$3395,0)
一旦我這樣做了,我一直在計劃將兩個dfs重新合併在一起,但是現在有了新列「不正確」。如果沒有分裂數據框的方法會更好。
這是最終目標DF:
Id | Category | Subcategory | Count | Flag | Phone_number | incorrect
1 A aa 4534 Y 222-444-3333
2 B bb 4807 Y 3335557777
3 C cc 8978 222-444-3333 Y
4 D dd 9874 333-555-7777 Y
5 E ee 3187 555-666-8888
6 F ff 8573 5556668888
謝謝
當我有機會,我會採取更深入的瞭解。 – piRSquared