Pandas教程06:DataFrame.merge数据的合并处理

DataFrame.merge() 是 pandas 库中用于合并两个DataFrame数据的方法。该方法主要用于根据一个或多个键(键可以是列名或索引)将两个 DataFrame 连接在一起,这个过程类似于 SQL 中的 JOIN 操作。

#我的Python教程
#微信公众号:wdPython

1.下面是 DataFrame.merge() 的一些常用参数:
left_on:指定左侧 DataFrame 的键。这可以是列名。默认为 None。
right_on:指定右侧 DataFrame 的键。这可以是列名。默认为 None。
how:指定连接类型。可以是 ‘left’(左连接)、‘right’(右连接)、‘outer’(全连接)或 ‘inner’(内连接,默认)。
indicator:在合并后的 DataFrame 中添加一个指示列,指示哪些行来自左侧 DataFrame,哪些行来自右侧 DataFrame。
sort:对结果进行排序。默认为 False。
suffixes:当左右两个 DataFrame 的键相同时,为避免重复,需要添加后缀。这是一个由两个字符串组成的元组,分别用于左侧和右侧 DataFrame。
copy:是否复制数据。默认为 True。
indicator:是否添加指示列。默认为 False。
validate:用于检查合并操作是否合理的参数。默认为 None。

2.示例用法:现在,我们有两个DataFrame:df1和df2。它们都有一个名为’诗人’的列。我们想要将这两个DataFrame按照’诗人’列进行合并,并得到每个人的名字,性别,年龄和朝代。


import pandas as pd

data1 = {
    
    '诗人': ['李白', '苏轼', '李清照', '杜甫', '岳飞'],
         '朝代': ['唐', '北宋', '宋', '唐', '南宋']}

print('原始DataFrame数据1'.center(40, '-'))
df1 = pd.DataFrame(data1)
print(df1)

data2 = {
    
    '诗人': ['李清照', '杜甫', '李白', '苏轼'],
         '性别': ['女', '男', '男', '男'],
         '芳龄': [15, 13, 18, 27]}
print('原始DataFrame数据2'.center(40, '-'))
df2 = pd.DataFrame(data2)
print(df2)
print('1.inner(内连接),是默认参数合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='inner')
print(merged_df)

print('2.outer全连接,合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='outer')
print(merged_df)

print('3.left(左连接)合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='left')
print(merged_df)

print('4.right(右连接)合并数据'.center(40, '-'))
merged_df = df1.merge(df2, on='诗人', how='right')
print(merged_df)

输出结果:我们通过on='诗人’参数指定了要按照’诗人’列进行合并。默认情况下,merge()方法会使用内连接(inner join),只会保留两个DataFrame中都有的行。如果你想要保留两个DataFrame中的所有行,可以使用how='outer’参数来执行外连接(outer join)。

-------------原始DataFrame数据1-------------
    诗人  朝代
0   李白   唐
1   苏轼  北宋
2  李清照   宋
3   杜甫   唐
4   岳飞  南宋
-------------原始DataFrame数据2-------------
    诗人 性别  芳龄
0  李清照  女  15
1   杜甫  男  13
2   李白  男  18
3   苏轼  男  27
------------1.inner(内连接,是默认参数)合并数据------------
    诗人  朝代 性别  芳龄
0   李白   唐  男  18
1   苏轼  北宋  男  27
2  李清照   宋  女  15
3   杜甫   唐  男  13
-------------2.outer全连接合并数据-------------
    诗人  朝代   性别    芳龄
0   李白   唐    男  18.0
1   苏轼  北宋    男  27.0
2  李清照   宋    女  15.0
3   杜甫   唐    男  13.0
4   岳飞  南宋  NaN   NaN
---------3.left(左连接)合并数据----------
    诗人  朝代   性别    芳龄
0   李白   唐    男  18.0
1   苏轼  北宋    男  27.0
2  李清照   宋    女  15.0
3   杜甫   唐    男  13.0
4   岳飞  南宋  NaN   NaN
------------4.right(右连接)合并数据------------
    诗人  朝代 性别  芳龄
0  李清照   宋  女  15
1   杜甫   唐  男  13
2   李白   唐  男  18
3   苏轼  北宋  男  27

3.关于参数how用于指定连接类型理解:
在这里插入图片描述
‘left’:左连接,这是默认值。只保留左侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。

‘right’:右连接。只保留右侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。
‘outer’:全连接。保留左侧和右侧DataFrame中的所有行,如果在键列中没有匹配的行,则填充NaN。
‘inner’:内连接。只保留在键列中同时出现在左侧和右侧的行。

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gxz888/article/details/134758700