下面是关于“Python Pandas数据合并pd.merge用法详解”的完整攻略:
1. pd.merge()函数的概述
pd.merge()函数是Pandas库中用于数据合并的重要函数之一,该函数主要用于根据一组或多组key将不同DataFrame中的行进行合并。该函数的基本语法如下:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
参数说明:
- left、right:需要合并的两个DataFrame对象;
- how:合并的方式,可以是inner、outer(全外连接)、left(左连接)和right(右连接);
- on:合并的key值,可以指定一个key,也可以指定多个key(列表形式);
- left_on、right_on:左右两个DataFrame对象连接的列名字,如果两个DataFrame对象的列名字不同,则分别指定对应的列名;
- left_index、right_index:是否使用索引作为连接的方式,默认为False;
- sort:将合并后的数据按照字典顺序排序,默认为True,排序使得查看结果更方便;
- suffixes:默认的显示在重复的列名后面的词,当两个DataFrame对象含有重复列名时,需要指定不同的后缀(缺省为('_x','_y'));
- copy:如果为True,则复制数据而不是原始数据进行操作;
- indicator:是否在合并后的数据集中加入一个数据源列来代表该数据属于哪个DataFrame,取值为True或False;
- validate:有none、one_to_one、one_to_many、many_to_one和many_to_many等取值。根据指定的关系进行确认,以便确保相关键不包含重复值,否则引发异常。
2. 示例1:基本用法
为了更好的理解pd.merge()函数,我们通过一个示例来说明其基本用法:
import pandas as pd
# 创建两个DataFrame对象
df1 = pd.DataFrame({'key': ['one', 'two', 'three', 'four'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['one', 'two', 'four', 'five'], 'value': [5, 6, 7, 8]})
# 输出合并前的两个DataFrame对象
print("df1:\n", df1)
print("df2:\n", df2)
# 根据key进行连接
result = pd.merge(df1, df2, on='key')
# 输出合并后的结果
print("result:\n", result)
输出结果如下:
df1:
key value
0 one 1
1 two 2
2 three 3
3 four 4
df2:
key value
0 one 5
1 two 6
2 four 7
3 five 8
result:
key value_x value_y
0 one 1 5
1 two 2 6
2 four 4 7
从上面的结果可以看出,根据key进行连接,合并后得到的是一个新的DataFrame对象result,其中value_x和value_y分别来自于df1和df2,表示合并前的两个DataFrame对象中的value列。
3. 示例2:使用多个key进行连接
我们也可以使用多个key值进行连接。如下所示:
import pandas as pd
# 创建两个DataFrame对象
df1 = pd.DataFrame({'key1': ['a', 'b', 'a', 'b'], 'key2': ['one', 'two', 'one', 'two'], 'value1': [1, 2, 3, 4], 'value2': [5, 6, 7, 8]})
df2 = pd.DataFrame({'key1': ['a', 'b', 'a', 'b'], 'key2': ['one', 'one', 'two', 'two'], 'value3': [5, 6, 7, 8], 'value4': [9, 10, 11, 12]})
# 输出合并前的两个DataFrame对象
print("df1:\n", df1)
print("df2:\n", df2)
# 根据多个key值进行连接
result = pd.merge(df1, df2, on=['key1','key2'])
# 输出合并后的结果
print("result:\n", result)
输出结果如下:
df1:
key1 key2 value1 value2
0 a one 1 5
1 b two 4 8
2 a one 3 7
3 b two 2 6
df2:
key1 key2 value3 value4
0 a one 5 9
1 b one 6 10
2 a two 7 11
3 b two 8 12
result:
key1 key2 value1 value2 value3 value4
0 a one 1 5 5 9
1 a one 3 7 5 9
2 b two 4 8 8 12
3 b two 2 6 8 12
可以看出,根据两个key1和key2进行连接,合并后得到的是一个新的DataFrame对象result,其中value1和value2分别来自于df1,value3和value4分别来自于df2。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas数据合并pd.merge用法详解 - Python技术站