zoukankan      html  css  js  c++  java
  • pandas DataFrame 交集并集补集

    1.场景,对于colums都相同的dataframe做过滤的时候

    例如:

    df1 = DataFrame([['a', 10, '男'], 
    ['b', 11, '男'],
    ['c', 11, '女'],
    ['a', 10, '女'],
    ['c', 11, '男']],
    columns=['name', 'age', 'sex'])

    df2 = DataFrame([['a', 10, '男'],
    ['b', 11, '女']],
    columns=['name', 'age', 'sex'])

    取交集:print(pd.merge(df1,df2,on=['name', 'age', 'sex']))
    取并集:print(pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))
    取差集(从df1中过滤df1在df2中存在的行):
    df1 = df1.append(df2)
    df1 = df1.append(df2)
    df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
    print(df1)

    代码:
    # -*- coding:utf-8 -*-
    __version__ = '1.0.0.0'
    """
    @brief : 简介
    @details: 详细信息
    @author : zhphuang
    @date : 2018-10-29
    """

    import pandas as pd
    from pandas import *

    df1 = DataFrame([['a', 10, '男'],
    ['b', 11, '男'],
    ['c', 11, '女'],
    ['a', 10, '女'],
    ['c', 11, '男']],
    columns=['name', 'age', 'sex'])
    print("df1: %s " % df1)
    df2 = DataFrame([['a', 10, '男'],
    ['b', 11, '女']],
    columns=['name', 'age', 'sex'])
    print("df2: %s " % df2)
    # 取交集
    print("交集: %s " % pd.merge(df1,df2,on=['name', 'age', 'sex']))

    # 取并集
    print("并集: %s " % pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))

    # 从df1中过滤df1在df2中存在的行,也就是取补集
    df1 = df1.append(df2)
    df1 = df1.append(df2)
    print("补集(从df1中过滤df1在df2中存在的行): %s " % df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False))
    截图 
     
    当值未一旬,而视茫茫,而发苍苍,而齿牙动摇
  • 相关阅读:
    使用dbms_metadata.get_ddl遇到ORA-31603
    oracle得到建表语句
    Linux性能优化和监控系列(一)——top工具
    Oracle在Linux下的性能优化
    地址跳转问题
    无法对 数据库'UDS' 执行 删除,因为它正用于复制
    [.net 多线程]SpinWait
    [.net 多线程 ]ReaderWriterLock
    [.net 多线程]Barrier
    [.net 多线程]CountdownEvent
  • 原文地址:https://www.cnblogs.com/niuniuc/p/9873134.html
Copyright © 2011-2022 走看看