从列A数据框A到数据框B中的C的匹配值,并使用熊猫从数据框A创建不匹配的列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从列A数据框A到数据框B中的C的匹配值,并使用熊猫从数据框A创建不匹配的列表相关的知识,希望对你有一定的参考价值。

[试图从数据框A的列A获取值[ID]的列表与数据框B的列B中的值[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)

以上是关于从列A数据框A到数据框B中的C的匹配值,并使用熊猫从数据框A创建不匹配的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用熊猫从另一个数据框 B 的列中删除包含特定数量值的数据框 A 中的行?

在(一个非常大的)熊猫数据框中定位值并存储到字典中

如何将每行列表中的元素与熊猫匹配

根据熊猫数据框中的最后一个值选择列

如何格式化熊猫数据框并保留原始浮点精度值

如何在不创建临时列的情况下从 pandas 数据框列计算最小值?