pandas.merge()函数用法详解

这里记录一下pandas.merge()函数的用法。

  1. 使用DataFrame一和二中的共有参数将两个DataFrame融合起来。
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', 'K1', 'K2', 'K3'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})
result = pd.merge(df1, df2, on='key')
print(result)
""" result: 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 """

上述表示使用共有key参数将df1df2融合起来。

  1. 使用key1key2参数中共有的对应参数将df1df2合并起来
import pandas as pd

df1 = pd.DataFrame({ 'key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({ 'key1': ['K0', 'K1', 'K1', 'K2'],
                    'key2': ['K0', 'K0', 'K0', 'K0'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2, on=['key1', 'key2'])
print(result)
""" result: 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 """

我们可以看到,在df1中存在[K0, K0]的对应关系,并且df2中也存在。此外,df1[K1, K0]的对应关系,df2中存在两个[K1,K0]的对应关系,因此我们最终会得到三行数据。并且,如果我们不设置on参数,程序默认会使用df1df2中共有的列对象,即这里的key1key2参数。如果这里我们不设置on参数。得到的结果与上述结果是一致的。

代码如下:

import pandas as pd

df1 = pd.DataFrame({ 'key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({ 'key1': ['K0', 'K1', 'K1', 'K2'],
                    'key2': ['K0', 'K0', 'K0', 'K0'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2)
print(result)
""" result: 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 """
  1. 使用outer参数将df1df2合并起来。
import pandas as pd

df1 = pd.DataFrame({ 'key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({ 'key1': ['K0', 'K1', 'K1', 'K2'],
                    'key2': ['K0', 'K0', 'K0', 'K0'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

result = pd.merge(df1, df2, how='outer', on=['key1', 'key2'])
print(result)
""" result: 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 """

outer参数类似于求并集,如果在一个DateFrame中不存在与另一个DataFrame匹配的元素,那么用NaN进行填充。上述结果一目了然中。这里不做过多的解释,大家如果有疑问,欢迎留言。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

    原文作者:勤奋的大熊猫
    原文地址: https://blog.csdn.net/u011699626/article/details/123092063
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞