Pandas | Dataframe的merge操作,像数据库一样尽情join

本文介绍了Pandas中DataFrame的merge和concat操作。merge类似于数据库的JOIN,支持inner、left、right和outer join,通过on或left_on/right_on指定连接列。concat则用于行或列的直接合并,对齐数据并处理层次索引。

今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并。

常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起。第二种是我们新获取了一份数据集,想要扩充旧的数据集。这两种合并操作在我们日常的工作当中非常寻常,那么究竟应该怎么操作呢?让我们一个一个来看。

merge

首先我们来看dataframe当中的merge操作,merge操作类似于数据库当中两张表的join,可以通过一个或者多个key将多个dataframe链接起来。

我们首先来创建两个dataframe数据:

df1 = pd.DataFrame({
   
   'id': [1, 2, 3, 3, 5, 7, 6], 'age': range(7)})

df2 = pd.DataFrame<
### `merge`方法 `merge`方法用于将两个DataFrame按照一个或多个键进行合并,类似于SQL中的连接操作。以下是一个简单的使用示例: ```python import pandas as pd # 创建两个DataFrame df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]}) df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]}) # 使用merge方法合并DataFrame merged_df = pd.merge(df1, df2, on='key') print(merged_df) ``` 在上述代码中,`pd.merge(df1, df2, on='key')`表示按照`key`列将`df1`和`df2`进行合并。默认情况下,`merge`方法使用的是内连接(inner join),只保留两个DataFrame中`key`列值都存在的行。 ### `concat`方法 `concat`方法相当于数据库中的全连接(union all),它可以指定连接的方式(outer join或inner join),还可以指定按照某个轴进行连接。与数据库不同的是,它不会去重,但是可以使用`drop_duplicates`方法达到去重的效果。以下是一个使用示例: ```python import pandas as pd # 创建两个DataFrame df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}) # 使用concat方法进行连接 concatenated_df = pd.concat([df1, df2], axis=0) print(concatenated_df) ``` 在上述代码中,`pd.concat([df1, df2], axis=0)`表示按行(axis=0)将`df1`和`df2`连接起来。 ### `drop_duplicates`方法 `drop_duplicates`方法是Pandas中用于处理重复数据的一个非常有用的工具。通过深入了解其用法和参数,可以更精确地控制重复数据的处理方式。以下是一个使用示例: ```python import pandas as pd # 创建一个包含重复数据的DataFrame data = {'col1': [1, 2, 2, 3], 'col2': ['a', 'b', 'b', 'c']} df = pd.DataFrame(data) # 使用drop_duplicates方法去除重复行 unique_df = df.drop_duplicates() print(unique_df) ``` 在上述代码中,`df.drop_duplicates()`会去除`df`中所有列值都相同的重复行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值