本文共 2070 字,大约阅读时间需要 6 分钟。
在Pandas中,合并(Merge)和融合(Concatenate)是处理数据集时常用的操作,它们在连接数据时有不同的应用场景。理解这两者的区别对于高效分析数据至关重要。
Merge用于根据键值将多个DataFrame结合在一起。它支持四种类型的连接:内连接(inner)、外连接(outer)、左连接(left)和右连接(right)。默认为内连接。
import pandas as pd
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})df2 = pd.DataFrame({'key': ['K0', 'K2', 'K3', 'K4'], 'C': ['C0', 'C2', 'C3', 'C4'], 'D': ['D0', 'D2', 'D3', 'D4']})pd.merge(df1, df2, on='key')
如果需要不同的连接类型,可以使用how参数:
pd.merge(df1, df2, on='key', how='outer') # 外连接pd.merge(df1, df2, on='key', how='left') # 左连接pd.merge(df1, df2, on='key', how='right') # 右连接
pd.merge(df1, df2, left_index=True, right_index=True)
假设有一个包含用户信息的DataFrame和一个包含购买记录的DataFrame,想根据用户ID进行内连接:
user_info = pd.DataFrame({'id': [1, 2, 3], 'name': ['John', 'Mary', 'Bob']})purchase_history = pd.DataFrame({'id': [2, 3, 4], 'product': ['Book', 'Pen', 'Pencil'], 'date': ['2021-01-01', '2021-01-02', '2021-01-03']})merged_data = pd.merge(user_info, purchase_history, on='id')print(merged_data) 结果会显示用户的姓名及其购买记录。
Concatenate用于沿着轴(行或列)堆叠多个DataFrame。支持垂直堆叠(axis=0)和水平堆叠(axis=1)。
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], index=['K0', 'K1', 'K2', 'K3']})df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3'], index=['K4', 'K5', 'K6', 'K7']})pd.concat([df1, df2], axis=0)
如果需要水平堆叠,设置axis=1:
pd.concat([df1, df2], axis=1)
将两个DataFrame按列合并:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}, index=['K0', 'K1', 'K2', 'K3'])df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=['K4', 'K5', 'K6', 'K7'])result_concat = pd.concat([df1, df2], axis=0)print("Concatenate Result (Vertical):")print(result_concat) 合并和融合都是Pandas中处理数据的重要工具。合并用于连接基于键的数据集,而融合用于堆叠数据集。理解两者的区别和使用场景,可以帮助您更高效地分析和处理数据。
转载地址:http://zmafk.baihongyu.com/