pandas 中的 join 和 merge 有什么区别-ag捕鱼王app官网

pandas 中的 join 和 merge 有什么区别

作者:迹忆客 最近更新:2024/04/20 浏览次数:

在 pandas 中,seriesdataframe 可以使用诸如 joinmerge 等各种操作轻松加入或组合。这些操作根据索引和列名组合了两个 dataframe。joinmerge 方法都可以组合两个 dataframe。join 和 merge 操作的主要区别在于 join 方法根据它们的索引组合两个 dataframe,而在 merge 方法中,我们需要指定列来组合两个 dataframe。

本文将讨论 pandas python 中 joinmerge 方法的区别。


pandas dataframe .join 方法

join 方法在它们的索引上连接两个 dataframe。让我们举个例子来展示 join 方法的工作原理。我们采用了两个 dataframe:left_dfright_df。使用 left_df.join(right_df) 代码,我们组合了两个 dataframe。

示例代码:

import pandas as pd
# create two dataframe
df_left = pd.dataframe({"name": ["x", "y", "z"], "score": [10, 8, 9]}).set_index("name")
df_right = pd.dataframe({"name": ["x", "y", "z"], "steals": [4, 5, 2]}).set_index(
    "name"
)
print(df_left)
print(df_right)
# join two dataframes
df_left.join(df_right)

输出:

      score
name       
x        10
y         8
z         9
      steals
name        
x          4
y          5
z          2
score	steals
name		
x	10	4
y	8	5
z	9	2

如果我们在两个 dataframe 中都有重叠的列,在这种情况下,连接将希望你从左侧 dataframe 中为重叠或公共列名称添加后缀。在以下 dataframes 中,重叠的列名称是 c

示例代码:

import pandas as pd
# creating the two dataframes
df_left = pd.dataframe([["x", 1], ["y", 2]], list("ab"), list("cd"))
df_right = pd.dataframe([["u", 3], ["v", 4]], list("ab"), list("cf"))
print(df_left)
print(df_right)
# join two dataframes
joined_df = df_left.join(df_right, lsuffix="_")
print(joined_df)

输出:

   c  d
a  x  1
b  y  2
   c  f
a  u  3
b  v  4
  c_  d  c  f
a  x  1  u  3
b  y  2  v  4

正如你在上面的输出中看到的那样,索引保留了四列。我们还可以通过使用 on 参数作为连接键在左侧 dataframe 上单独指定特定列。


pandas dataframe .merge 方法

merge 方法也用于合并两个 dataframe。但是,merge 方法需要列名作为合并两个 dataframe 的合并键。在下面的例子中,我们实现了简单的合并函数来合并两个 dataframe 而不使用任何参数。

示例代码:

import pandas as pd
# create two dataframe
df_left = pd.dataframe({"name": ["x", "y", "z"], "score": [10, 8, 9]}).set_index("name")
df_right = pd.dataframe({"name": ["x", "y", "z"], "steals": [4, 5, 2]}).set_index(
    "name"
)
print(df_left)
print(df_right)
# merge two dataframes
df_left.merge(df_right, on="name")

输出:

      score
name       
x        10
y         8
z         9
      steals
name        
x          4
y          5
z          2
score	steals
name		
x	10	4
y	8	5
z	9	2

我们可以在 merge 方法中使用 on 参数指定重叠列名。在以下示例中,我们指定重叠列名称 c 以对两个 dataframe 执行合并操作。

示例代码:

import pandas as pd
# creating the two dataframes
df_left = pd.dataframe([["x", 1], ["y", 2]], list("ab"), list("cd"))
df_right = pd.dataframe([["u", 3], ["v", 4]], list("ab"), list("cf"))
print(df_left)
print(df_right)
# merge dataframes
merged_df = df_left.merge(df_right, on="c", how="outer")
print(merged_df)

输出:

   c  d
a  x  1
b  y  2
   c  f
a  u  3
b  v  4
   c    d    f
0  x  1.0  nan
1  y  2.0  nan
2  u  nan  3.0
3  v  nan  4.0

使用 right_onleft_on 参数分别指定它。请参阅以下示例,其中我们使用了不同的参数,例如 onleft_onright_on,以便更好地理解。

示例代码:

import pandas as pd
# creating the two dataframes
df_left = pd.dataframe([["x", 1], ["y", 2]], list("ab"), list("cd"))
df_right = pd.dataframe([["u", 3], ["v", 4]], list("ab"), list("cf"))
print(df_left)
print(df_right)
merged_df = df_left.merge(
    df_right, left_index=true, right_index=true, suffixes=["_", ""]
)
print(merged_df)

输出:

   c  d
a  x  1
b  y  2
   c  f
a  u  3
b  v  4
  c_  d  c  f
a  x  1  u  3
b  y  2  v  4

结论

我们通过一些示例演示了 pandas 中的 joinmerge 之间的区别。我们已经看到这两种方法,joinmerge 用于类似的目的,在 pandas 中结合 dataframes。但是,不同之处在于 join 方法在它们的 indexed 上组合了两个 dataframe,而在 merge 方法中,我们指定列名来组合两个 dataframe。

上一篇:

下一篇:

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图