如何在Python Pandas中结合两个数据框架

如何在Python Pandas中结合两个数据框架

在许多现实生活中,我们要使用的数据来自于多个文件。我们经常需要把这些文件合并成一个DataFrame来分析数据。Pandas提供了这样的设施,可以轻松地将系列或DataFrame与各种索引的集合逻辑和连接/合并类型的操作中的关系代数功能结合。此外,Pandas还提供了比较两个系列或DataFrame并总结其差异的工具。

连接数据框架

pandas中的concat()函数用于将一个数据框架中的列或行追加到另一个数据框架中。concat()函数完成了沿着一个axis进行连接操作的所有繁重工作,同时对其他axis上的索引(如果有的话)执行可选的集合逻辑(union或intersection)。

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
  
frames = [df1, df2]
  
result = pd.concat(frames)
display(result)
Python

输出:

如何在Python中结合两个数据框架 - Pandas?

连接数据框架

当我们连接我们的DataFrames时,我们只是把它们加在一起,也就是把它们垂直或并排地堆在一起。另一种结合DataFrames的方法是在每个数据集中使用包含共同值的列(一个共同的唯一ID)。使用一个共同的字段来组合DataFrames被称为 “连接”。包含共同值的列被称为 “连接键”。当一个DataFrame是一个 “查找表”,包含了我们想包含在另一个DataFrame中的额外数据时,以这种方式连接DataFrame通常是有用的。

注意:这种连接表的过程类似于我们在SQL数据库中对表的处理。

当把多个DataFrames粘合在一起时,你可以选择如何处理其他axis(除了被连接的axis以外)。这可以通过以下两种方式进行。

  • 取它们的联合,join=’outer’。这是默认选项,因为它导致零信息损失。
  • 采取交集的方式,join=’inner’。

示例:

import pandas as pd
  
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
df3 = pd.DataFrame({'City': ['MUMBAI', 'PUNE', 'MUMBAI', 'DELHI'],
                    'Age': ['12', '13', '14', '12']})
  
# the default behaviour is join='outer'
# inner join
  
result = pd.concat([df1, df3], axis=1, join='inner')
display(result)
Python

输出:

如何在Python中结合两个数据框架 - Pandas?

使用append进行串联

concat()的一个有用的捷径是Series和DataFrame的append()实例方法。这些方法实际上早于concat。

示例:

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
# append method
result = df1.append(df2)
display(result)
Python

输出:

如何在Python中结合两个数据框架 - Pandas?

注意: append()可能采取多个对象进行连接。

示例:

import pandas as pd
# First DataFrame
df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04'],
                    'Name': ['ABC', 'PQR', 'DEF', 'GHI']})
  
# Second DataFrame
df2 = pd.DataFrame({'id': ['B05', 'B06', 'B07', 'B08'],
                    'Name': ['XYZ', 'TUV', 'MNO', 'JKL']})
  
df3 = pd.DataFrame({'City': ['MUMBAI', 'PUNE', 'MUMBAI', 'DELHI'],
                    'Age': ['12', '13', '14', '12']})
  
  
# appending multiple DataFrame
result = df1.append([df2, df3])
display(result)
Python

输出:

如何在Python中结合两个数据框架 - Pandas?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册