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。