打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python:利用pandas对两个dataframe数据进行左联接/左关联(以左边为主体)、右联接/右关联(以右边为主体)、内联接(取交集)、外联接(取并集)操作案例实现代码

Python:利用pandas对两个dataframe数据进行左联接/左关联(以左边为主体)、右联接/右关联(以右边为主体)、内联接(取交集)、外联接(取并集)操作案例实现代码


join、left join和right join之间区别

Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略

https://yunyaniu.blog.csdn.net/article/details/107620041

左联接/左关联(以左边为主体)、右联接/右关联(以右边为主体)、内联接(取交集)、外联接(取并集)操作案例

实现代码

# Python:利用pandas对两个dataframe数据进行左联接/左关联(以左边为主体)、右联接/右关联(以右边为主体)、内联接(取交集)、外联接(取并集)操作案例实现代码

import pandas as pd
import numpy as np
 
 
students_info={"student_num": ['1001',        '1002',           '1003',            '1004'],
               "name":        ['Bob',         'LiSa',           'Mary',            'Alan'],
               "major":       ['mechanical',  'philosophy',     'mathematics',  'computer'],
               "grade":       ['freshman',     'sophomore',     'junior',         'senior'],
               "sex":  ['男',          '女',                        '女',                        None,],   # 输出 None
               "age":  [np.nan,        28,                           38 ,                        '' ],   # 输出 
               "born": [pd.NaT,     pd.Timestamp("1990-01-01"),  pd.Timestamp("1980-01-01"),      ''],   # 输出 NaT
               }   

students_score={"name":        ['Bob',         'LiSa',           'Mary',            'Tom'],
               "chinese":      [85,              80,                 95,                98],
               "math":         [90,              95,                 85,                90],
               }
s_info_df = pd.DataFrame(students_info)
s_score_df = pd.DataFrame(students_score)

s_df_left = s_info_df.merge(s_score_df, left_on='name',right_on='name',how='left')
print('------------left:以左边为主体--------------')
print(s_df_left)

s_df_right = s_info_df.merge(s_score_df, left_on='name',right_on='name',how='right')
print('------------right:以右边为主体--------------')
print(s_df_right)

s_df_inner = s_info_df.merge(s_score_df, left_on='name',right_on='name',how='inner')
print('------------inner:取交集--------------')
print(s_df_inner)

s_df_outer = s_info_df.merge(s_score_df, left_on='name',right_on='name',how='outer')
print('------------outer:取并集--------------')
print(s_df_outer)

------------left:以左边为主体--------------
  student_num  name        major      grade  ...  age       born chinese  math
0        1001   Bob   mechanical   freshman  ...  NaN        NaT    85.0  90.0
1        1002  LiSa   philosophy  sophomore  ...   28 1990-01-01    80.0  95.0
2        1003  Mary  mathematics     junior  ...   38 1980-01-01    95.0  85.0
3        1004  Alan     computer     senior  ...             NaT     NaN   NaN

[4 rows x 9 columns]
------------right:以右边为主体--------------
  student_num  name        major      grade  sex  age       born  chinese  math
0        1001   Bob   mechanical   freshman    男  NaN        NaT       85    90
1        1002  LiSa   philosophy  sophomore    女   28 1990-01-01       80    95
2        1003  Mary  mathematics     junior    女   38 1980-01-01       95    85
3         NaN   Tom          NaN        NaN  NaN  NaN        NaT       98    90
------------inner:取交集--------------
  student_num  name        major      grade sex  age       born  chinese  math
0        1001   Bob   mechanical   freshman   男  NaN        NaT       85    90
1        1002  LiSa   philosophy  sophomore   女   28 1990-01-01       80    95
2        1003  Mary  mathematics     junior   女   38 1980-01-01       95    85
------------outer:取并集--------------
  student_num  name        major      grade  ...  age       born chinese  math
0        1001   Bob   mechanical   freshman  ...  NaN        NaT    85.0  90.0
1        1002  LiSa   philosophy  sophomore  ...   28 1990-01-01    80.0  95.0
2        1003  Mary  mathematics     junior  ...   38 1980-01-01    95.0  85.0
3        1004  Alan     computer     senior  ...             NaT     NaN   NaN
4         NaN   Tom          NaN        NaN  ...  NaN        NaT    98.0  90.0

[5 rows x 9 columns]
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Pandas详解十八之DataFrame对象的
数据科学 | Pandas数据分析入门
PANDAS 数据合并与重塑(join/merge篇)
Python 数据处理库 pandas 进阶教程
数据分析——Pandas合并数据,实现多表连接查询
Pandas之旅(三)最实用的Merge, Join,Concat方法详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服