Pandas入门第三章之数据拼接操作

 

 

本节主要讲解pandas中的两种数据拼接操作,第一pd.merge()横向连接和pd.concat()纵向连接。还是那句话,我这只是简单地介绍一下,如果想要熟练掌握,参加一两个比赛还是必要的。

 

介绍pd.merge()函数的时候主要从两个方面介绍一下:

第一: merge()中如何根据特定的列合并数据, 默认的时候 merge()函数对数据进行合并的步骤如下:

1、首先是直接从两个数据集中找出列名相同的数据列。

2、然后对于记录中列即出现在数据集A又出现在数据集B, 则将该条记录保存到结果数据集中。否则丢弃这条记录

Pandas入门第三章之数据拼接操作_第1张图片

第二: merge(A, B)中四种数据合并方式的特点 inner outer left right (这个看书很好理解,但是想要表达的很清楚有点难,语文不好请见谅)

1、inner 表示该条记录的值即出现A又要出现在数据集B之中 才将其保存到结果数据集中

2、outer 表示该条记录的值出现在A,B中任何一个,都要把合并之后的结果数据保存到最后

3、 left  表示该条记录的值出现在数据集A中,就要把该记录保存到数据集中

4、 right 表示该条记录的值出现在数据集B中的结果也保存到结果记录之中

Pandas入门第三章之数据拼接操作_第2张图片

 

import numpy as np
import pandas as pd

data_1 = {'name': ['YYLin', 'GXYan', 'YYLin', 'YYLin_3'], 'birth_day': ['2000-01', '2000-01', '2000-01', '2001-04'],
          'age': [1, 2, 3, 4]}

data_2 = {'name': ['YYLin', 'GXYan', 'GXYan', 'GXYan_3'], 'birth_day': ['2000-01', '2000-01', '2001-01', '2001-04'],
          'age': [1, 6, 7, 8]}

merce_data_1 = pd.DataFrame(data_1)
merce_data_2 = pd.DataFrame(data_2)
print("原始数据的信息:\n", merce_data_1, '\n', merce_data_2)

test_merce_keyword = True

if test_merce_keyword:
    # 不指定关键字进行合并的结果
    merce_1 = pd.merge(merce_data_1, merce_data_2)
    print("不指定合并的关键字时合并的结果:\n", merce_1)

    # 指定关键时进行合并的结果
    merce_2 = pd.merge(merce_data_1, merce_data_2, on=['name', 'birth_day'])
    print("指定特定的列进行合并的结果:\n", merce_2)
else:
    # pandas中使用merge()进行合并的四种不同的方式 inner outer left right
    merge_method = 'right'

    if merge_method == 'inner':
        merce_3 = pd.merge(merce_data_1, merce_data_2, on=['name', 'birth_day'], how='inner')
        print("使用inner进行合并之后的结果是:\n", merce_3)
    elif merge_method == 'outer':
        merce_4 = pd.merge(merce_data_1, merce_data_2, on=['name', 'birth_day'], how='outer')
        print("使用outer进行合并之后的结果是:\n", merce_4)
    elif merge_method == 'left':
        merce_5 = pd.merge(merce_data_1, merce_data_2, on=['name', 'birth_day'], how='left')
        print("使用left进行合并之后的结果是:\n", merce_5)
    else:
        merce_6 = pd.merge(merce_data_1, merce_data_2, on=['name', 'birth_day'], how='right')
        print("使用right进行合并之后的结果是:\n", merce_6)

 

使用pandas中concat()进行拼接操作,数据集还是上面的数据集,这里注意一点就是concat()函数默认是使用原来数据集中的索引,所以如果想要使用自己定义的索引的话,参数中需要使用ignore_index=True这个选项。

Pandas入门第三章之数据拼接操作_第3张图片 实验结果
# 使用pandas中的concat()函数进行拼接操作
ignore_index = True
if ignore_index:
    concat_result = pd.concat([merce_data_1, merce_data_2], ignore_index=True)
    print("使用pandas中的concat()函数拼接之后的结果:\n", concat_result)
else:
    concat_result = pd.concat([merce_data_1, merce_data_2])
    print("使用pandas中的concat()函数拼接之后的结果:\n", concat_result)

 

你可能感兴趣的:(Pandas快速入门)