pandas 中的 join 和 merge 有什么区别
在 pandas 中,series
或 dataframe
可以使用诸如 join
和 merge
等各种操作轻松加入或组合。这些操作根据索引和列名组合了两个 dataframe。join
和 merge
方法都可以组合两个 dataframe。join 和 merge 操作的主要区别在于 join
方法根据它们的索引组合两个 dataframe,而在 merge
方法中,我们需要指定列来组合两个 dataframe。
本文将讨论 pandas python 中 join
和 merge
方法的区别。
pandas dataframe .join
方法
join
方法在它们的索引上连接两个 dataframe
。让我们举个例子来展示 join
方法的工作原理。我们采用了两个 dataframe:left_df
和 right_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_on
和 left_on
参数分别指定它。请参阅以下示例,其中我们使用了不同的参数,例如 on
、left_on
、right_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 中的 join
和 merge
之间的区别。我们已经看到这两种方法,join
和 merge
用于类似的目的,在 pandas 中结合 dataframes。但是,不同之处在于 join
方法在它们的 indexed
上组合了两个 dataframe,而在 merge
方法中,我们指定列名来组合两个 dataframe。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
pandas dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串