Pandas基础03(数据的合并操作/concat()/append()/merge())

3.4.1 数据的合并操作
3.4.1.1 使用concat()数据合并

在数据分析中,经常需要将多个数据集进行合并。Pandas 提供了一个强大的工具——pd.concat(),用来连接两个或多个 DataFrame。这种合并操作可以是垂直合并(行合并)或水平合并(列合并)。此外,concat() 还提供了许多选项,帮助我们定制合并行为。

df1 = pd.DataFrame(np.random.randint(1, 10, (3, 4)), index=[1, 2, 3], columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randint(1, 10, (3, 4)), index=[2, 3, 4], columns=['B', 'C', 'D', 'E'])
  • 垂直合并:按行拼接

当希望将多个 DataFrame 垂直堆叠(即按行合并)时,可以使用 pd.concat(),其默认的合并方式是沿着 axis=0(即按行)。假设有两个 DataFrame df1df2,我们可以通过以下方式进行垂直合并:

# 垂直合并
result = pd.concat([df1, df2])
print(result)

输出:

# 结果不难发现对应的列索引会对齐,空缺的由NaN补齐
   A    B  C  D    E
1  8.0  9  3  6  NaN
2  9.0  7  6  3  NaN
3  5.0  5  1  1  NaN
2  NaN  5  9  4  6.0
3  NaN  9  7  2  5.0
4  NaN  4  7  9  4.0

注意,合并后,df1df2 的行索引是保留的。我们也可以通过设置 ignore_index=True 来重置行索引:

result = pd.concat([df1, df2], ignore_index=True)
print(result)

输出:

   A    B  C  D    E
0  8.0  9  3  6  NaN
1  9.0  7  6  3  NaN
2  5.0  5  1  1  NaN
3  NaN  5  9  4  6.0
4  NaN  9  7  2  5.0
5  NaN  4  7  9  4.0
  • 水平合并:按列拼接

除了按行合并,我们还可以选择按列(axis=1)进行合并,即水平合并。这适用于当两个 DataFrame 具有相同的索引时,我们希望将它们的列进行拼接。例如:

result = pd.concat([df1, df2], axis=1)
print(result)

输出:

# 结果不难发现对应的行索引会对齐,空缺的由NaN补齐
	A    B    C    D    B    C    D    E
1  8.0  9.0  3.0  6.0  NaN  NaN  NaN  NaN
2  9.0  7.0  6.0  3.0  5.0  9.0  4.0  6.0
3  5.0  5.0  1.0  1.0  9.0  7.0  2.0  5.0
4  NaN  NaN  NaN  NaN  4.0  7.0  9.0  4.0
  • 使用多层次索引

pd.concat() 还允许为合并的数据设置多层次索引,这对于标识数据来源非常有用。通过 keys 参数,我们可以为每个 DataFrame 指定一个标签,这样合并后的数据将包含这些标签作为层次索引。

按行合并时使用多层次索引

result = pd.concat([df1, df2], keys=['AA', 'BB'])
print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值