python - 将 A 列数据框 A 中的值匹配到数据框 B 中的 B 列,并使用 pandas 从数据框 A 创建无匹配项列表
问题描述
试图从数据框 A 中的列 A 中获取与数据框 B 中的列 B 中的值 [ID] 不匹配的值 [ID] 列表。数据框 A,列 A 将只有 1 个值的实例 - 其中数据框 B、B 列可以有多个值的实例。
我想得到一个数据框,其中包含数据框 A 中的所有行,其中值在数据框 B 中不匹配。
这就是我得到的——但它有很多匹配项。
def get_hours_id(labor_excel, people_excel):
df = pd.read_excel(labor_excel)
df1 = pd.read_excel(people_excel)
internal_id_people_list = df1['ID']
internal_id_list = df['ID']
non_match_id = set(internal_id_people_list).difference(internal_id_list)
for id in non_match_id:
result = df1[df1['ID'] == id]
print(result)
数据框 A
Column A Column B Column C
int(123) name(mike) department A
int(234) name(Joe) department B
int(567) name(Jane) department A
数据框 B
Column A Column B Column C
int(123) name(mike) department A
int(123) name(Mike) department A
int(567) name(Jane) department B
int(567) name(Jane) department B
int(567) name(Jane) department B
新数据框(结果)
Column A Column B Column C
int(234) name(Joe) department B
解决方案
这取决于数据的大小,但如果数据框很大,最好的解决方案可能是进行简单的连接并删除匹配的内容
df_B['flag'] = 1
unmacthed = df_A.merge(df_B, how='left').query('flag != flag')
unmacthed = unmacthed.drop('flag',axis=1)
推荐阅读
- typescript - 打字稿错误 - 预期 1 个参数,但得到 0
- java - ANDROID STUDIO 中的文件夹视图
- javascript - ActiveAdmin 破坏了 Rails JQuery UJS。不显眼的 JavaScript ajax:success 和 ajax:error 没有触发或被调用
- node.js - 时刻无效日期 - 字符串到时刻 - hh:mm:ss zzz mm/dd/yyyy (02:10:02 SGT 06/07/2018)
- dns - DNS 查找得到不存在的域错误
- javascript - HTML 未正确处理
- excel - 将工作表中的所有行获取到另一个工作表中,其中每行包含一个与某个值匹配的单元格
- php - 使用 Laravel 获取父子数据(树复选框)
- javascript - Javascript 开关没有给出预期的结果
- php - 显示php表