Pandas中DataFrame的分组/分割/合并的实现

  • Post category:Python

Pandas是数据科学领域常用的Python库,其中DataFrame是其核心数据结构之一。在处理大量数据时,实现DataFrame的分组/分割/合并操作可以极大地提高数据处理效率。

分组

DataFrame可以按照某一列或几列进行分组,实现方式是使用groupby()方法。例如按照“City”这一列来分组:

import pandas as pd

# 构造数据
df = pd.DataFrame({'City':['Beijing','Beijing','Shanghai','Shanghai','Guangzhou','Guangzhou'],
                   'Year':[2016,2017,2016,2017,2016,2017],
                   'Population':[2100,2300,2424,2561,3562,3634]})

# 按照 City 列进行分组
grouped = df.groupby('City')

我们可以遍历grouped来看看各个组的元素:

for group_name, group_data in grouped:
    print(group_name)
    print(group_data)

输出结果:

Beijing
       City  Year  Population
0  Beijing  2016        2100
1  Beijing  2017        2300
Guangzhou
        City  Year  Population
4  Guangzhou  2016        3562
5  Guangzhou  2017        3634
Shanghai
       City  Year  Population
2  Shanghai  2016        2424
3  Shanghai  2017        2561

可以看到,按照“City”这一列实现了分组,并分别输出各个组的数据。

分割

在对DataFrame进行分割时,可以使用split()方法。例如,我们将一个DataFrame拆分为两个DataFrame:

import pandas as pd

# 构造数据
df = pd.DataFrame({'Name':['Alice','Bob','Charlie','David','Emily','Frank','Gloria','Hank'],
                   'Score':[65,78,90,45,87,79,99,57]})

# 根据index将DataFrame拆分为两个
df1 = df[:4]
df2 = df[4:]

这里将df按照index拆分为两个DataFrame,分别是前四行和后四行。实现了DataFrame的分割操作。

合并

Pandas提供了多种方式来实现DataFrame的合并,这里讲解一种较为常见的方式,即使用merge()方法。例如:

import pandas as pd

# 构造数据
df1 = pd.DataFrame({'Name':['Alice','Bob','Charlie','David','Emily','Frank'],
                    'Age':[18,19,17,20,18,21]})
df2 = pd.DataFrame({'Name':['Bob','David','Frank','Gloria','Hank'],
                    'Gender':['M','M','M','F','M']})

# 合并两个DataFrame
merged = pd.merge(df1, df2, on='Name', how='left')

这里将两个DataFrame按照“Name”这一列进行合并,同时指定了合并方式为“left”,表示使用左侧DataFrame的行作为基准,如果右侧DataFrame缺失该行则为NaN。结果如下所示:

       Name  Age Gender
0     Alice   18    NaN
1       Bob   19      M
2   Charlie   17    NaN
3     David   20      M
4     Emily   18    NaN
5     Frank   21      M

可以看到,合并结果为一个新的DataFrame,包含了两个DataFrame的信息,并根据指定条件进行了合并。

以上就是Pandas中DataFrame的分组/分割/合并的实现攻略。通过分组,可以实现DataFrame的按照某一列或几列进行分组操作;通过分割,可以将一个DataFrame拆分为几个DataFrame;通过合并,可以将两个或多个DataFrame合并为一个新的DataFrame。