我刚在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