Python数据分析之 Pandas Dataframe合并操作

314 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

在数据分析中,避免不了要从多个数据集中取数据,那就避免不了要进行数据的合并,这篇文章就来介绍一下 Dataframe 对象的合并操作。

Pandas 提供了merge()方法来进行合并操作,使用语法如下:

pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False)

常用的参数说明:

  • left、right:指定左右两个要进行合并的 DataFrame 对象
  • how:指定合并类型,可以选择left、right、outer、inner,此参数可以确定以哪边(左边、右边或者左右共有)的键为基准,如果出现匹配失败的用NaN填充,默认为inner,具体如下:
    • left:代表左连接,以左DataFrame为基准,右侧匹配失败的用NaN填充
    • right:代表右连接,以右DataFrame为基准,左侧匹配失败的用NaN填充
    • inner:代表内连接,取交集
    • outer:代表外连接,取并集,匹配失败的用NaN填充
  • on:指定用于连接的键,也就是列名,传递改参数的话,必须保证传递的“键”在左右两边的DataFrame中都存在
  • left_on:指定左侧DataFrame中用于连接的键
  • right_on:指定右侧DataFrame中用于连接的键
  • left_index & right_index:表示以行索引作为合并基准,默认为False
  • sort:指定是否按照字典顺序通过连接键对结果DataFrame进行排序,默认为False

例如,对下面两个 DataFrame 对象执行合并操作:

import pandas as pd

data = {"name": ["Alice", "Bob", "Cindy", "David"], "age": [25, 23, 28, 24], "gender": ["woman", "man", "woman", "man"]}
df1 = pd.DataFrame(data)
df1

image.png

data = {"name": ["Alice", "Bob", "Cindy", "Emilie"], "city": ["beijing", "beijing", "jinan", "shanghai"]}
df2 = pd.DataFrame(data)
df2

image.png 使用name作为连接键:

merge_pd = pd.merge(df1, df2, on="name")
merge_pd

结果输出如下: image.png

设置为左连接:

merge_pd = pd.merge(df1, df2, on="name", how="left")
merge_pd

结果输出如下: image.png

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !