Python Pandas –合并,联接和串联

There are three main ways to combine dataFrames i.e., merging, joining and concatenating. The following examples will illustrate merging, joining and concatenation.

组合dataFrames的主要方法有三种,即合并,联接和串联 。 以下示例将说明合并,联接和串联。

Create three dataframes

创建三个数据框

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3'],
    }, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7'],
    }, index=[4, 5, 6, 7])

df3 = pd.DataFrame({
    'A': ['A8', 'A9', 'A10', 'A11'],
    'B': ['B8', 'B9', 'B10', 'B11'],
    'C': ['C8', 'C9', 'C10', 'C11'],
    'D': ['D8', 'D9', 'D10', 'D11'],
    }, index=[8, 9, 10, 11])

# printing
print(df1)
print(df2)
print(df3)

Output

输出量

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
      A    B    C    D
8    A8   B8   C8   D8
9    A9   B9   C9   D9
10  A10  B10  C10  D10
11  A11  B11  C11  D11

级联 (Concatenation)

Concatenation glues/combines the dataFrames. Please note that the dimensions should match along the axis we are concatenating on.

串联粘贴/合并dataFrames。 请注意,尺寸应沿着我们串联的轴匹配。

Use pd.concat and pass in a list of dataFrames to concatenate together.

使用pd.concat并传入dataFrames列表以串联在一起。

print(pd.concat([df1,df2,df3]))
'''
Output:
      A    B    C    D
0    A0   B0   C0   D0
1    A1   B1   C1   D1
2    A2   B2   C2   D2
3    A3   B3   C3   D3
4    A4   B4   C4   D4
5    A5   B5   C5   D5
6    A6   B6   C6   D6
7    A7   B7   C7   D7
8    A8   B8   C8   D8
9    A9   B9   C9   D9
10  A10  B10  C10  D10
11  A11  B11  C11  D11
'''

# specify axis=1, 
# if you want to join and merge along the concatenate
print(pd.concat([df1,df2,df3], axis = 1))

'''
Output:
      A    B    C    D    A    B    C    D    A    B    C    D
0    A0   B0   C0   D0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1    A1   B1   C1   D1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2    A2   B2   C2   D2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
3    A3   B3   C3   D3  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN   A4   B4   C4   D4  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN   A5   B5   C5   D5  NaN  NaN  NaN  NaN
6   NaN  NaN  NaN  NaN   A6   B6   C6   D6  NaN  NaN  NaN  NaN
7   NaN  NaN  NaN  NaN   A7   B7   C7   D7  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A8   B8   C8   D8
9   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A9   B9   C9   D9
10  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  A10  B10  C10  D10
11  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  A11  B11  C11  D11
'''

In the above example, we see a bunch of missing values and that is because these data frames didn’t have values for all the indices we wanted to concatenate on. While working on concatenation and ensure that all the values are lined up correctly when joining on-axis.

在上面的示例中,我们看到了一堆丢失的值,这是因为这些数据框没有要连接的所有索引的值。 在进行串联时,请确保在同轴连接时所有值都正确对齐。

合并中 (Merging)

Let's create some more example dataFrames,

让我们创建更多示例dataFrames,

left = pd.DataFrame({
  'key': ['K0', 'K1', 'K2', 'K3'],
  'A': ['A0', 'A1', 'A2', 'A3'],
  'B': ['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
  'key': ['K0', 'K1', 'K2', 'K3'],
  'C': ['C0', 'C1', 'C2', 'C3'],
  'D': ['D0', 'D1', 'D2', 'D3']
})

# printing
print(left)
print(right)

'''
Output:
  key   A   B
0  K0  A0  B0
1  K1  A1  B1
2  K2  A2  B2
3  K3  A3  B3
  key   C   D
0  K0  C0  D0
1  K1  C1  D1
2  K2  C2  D2
3  K3  C3  D3
'''

The merge function allows merging the dataFrames using similar logic as merging SQL tables. For instance,

合并功能允许使用与合并SQL表类似的逻辑来合并dataFrame。 例如,

# default merge on 'inner'
print(pd.merge(left,right,how='inner',on='key'))

'''
Output:
  key   A   B   C   D
0  K0  A0  B0  C0  D0
1  K1  A1  B1  C1  D1
2  K2  A2  B2  C2  D2
3  K3  A3  B3  C3  D3
'''  

A little more complicated example dataFrames can be,

稍微复杂一点的示例dataFrames可以是,

left = pd.DataFrame({
  'key1': ['K0', 'K0', 'K1', 'K2'],
  'key2': ['K0', 'K1', 'K0', 'K1'],
  'A': ['A0', 'A1', 'A2', 'A3'],
  'B': ['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
  'key1': ['K0', 'K1', 'K1', 'K2'],
  'key2': ['K0', 'K0', 'K0', 'K0'],
  'C': ['C0', 'C1', 'C2', 'C3'],
  'D': ['D0', 'D1', 'D2', 'D3']
})

# pass a single column 'key' or list of columns
print(pd.merge(left, right, on=['key1', 'key2']))
'''
  key1 key2   A   B   C   D
0   K0   K0  A0  B0  C0  D0
1   K1   K0  A2  B2  C1  D1
2   K1   K0  A2  B2  C2  D2
'''

# merge outer (similar to outer join)
print(pd.merge(left, right, how='outer', on=['key1', 'key2']))
'''
  key1 key2    A    B    C    D
0   K0   K0   A0   B0   C0   D0
1   K0   K1   A1   B1  NaN  NaN
2   K1   K0   A2   B2   C1   D1
3   K1   K0   A2   B2   C2   D2
4   K2   K1   A3   B3  NaN  NaN
5   K2   K0  NaN  NaN   C3   D3
'''

# merge right (similar to right join)
print(pd.merge(left, right, how='right', on=['key1', 'key2']))
'''
  key1 key2    A    B   C   D
0   K0   K0   A0   B0  C0  D0
1   K1   K0   A2   B2  C1  D1
2   K1   K0   A2   B2  C2  D2
3   K2   K0  NaN  NaN  C3  D3
'''

# merge left (similar to left join)
print(pd.merge(left, right, how='left', on=['key1', 'key2']))
'''
  key1 key2   A   B    C    D
0   K0   K0  A0  B0   C0   D0
1   K0   K1  A1  B1  NaN  NaN
2   K1   K0  A2  B2   C1   D1
3   K1   K0  A2  B2   C2   D2
4   K2   K1  A3  B3  NaN  NaN
'''

加盟 (Joining)

Joining is a convenient method for combining the columns of two potentially differently-indexed DataFrames into a single result DataFrame. Joining is very similar to merge except they are joining on the index instead of a column.

联接是一种方便的方法,用于将两个可能具有不同索引的DataFrame的列组合为单个结果DataFrame。 联接与合并非常相似,只不过它们是在索引而不是列上联接。

Create example dataFrames,

创建示例数据框,

left = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
  },
  index = ['K0', 'K1', 'K2'])

right = pd.DataFrame({
    'C': ['C0', 'C2', 'C3'],
    'D': ['D0', 'D2', 'D3']
  },
  index = ['K0', 'K2', 'K3'])

print(left.join(right))
'''
     A   B    C    D
K0  A0  B0   C0   D0
K1  A1  B1  NaN  NaN
K2  A2  B2   C2   D2
'''

print(left.join(right, how='outer'))
'''
      A    B    C    D
K0   A0   B0   C0   D0
K1   A1   B1  NaN  NaN
K2   A2   B2   C2   D2
K3  NaN  NaN   C3   D3
'''


翻译自: https://www.includehelp.com/python/python-pandas-merging-joining-and-concatenating.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值