📜  根据多列中的值拆分 Pandas 中的数据框(1)

📅  最后修改于: 2023-12-03 15:40:27.935000             🧑  作者: Mango

根据多列中的值拆分 Pandas 中的数据框

在Pandas中,有时候需要根据多个列中的值将数据框拆分成多个数据框或组。这个操作在数据处理中非常常见。在本文中,我们将介绍如何使用 Pandas 将数据框拆分成多个数据框或组。

数据集

我们将使用以下示例数据框进行演示:

import pandas as pd

data = {'Company': ['Google', 'Microsoft', 'Facebook', 'Google', 'Microsoft', 'Facebook'],
        'Year': [2017, 2017, 2017, 2018, 2018, 2018],
        'Revenue': [100, 120, 80, 150, 130, 100]}
df = pd.DataFrame(data)
print(df)

注意:此处使用 print() 会使输出更易读。

输出:

     Company  Year  Revenue
0     Google  2017      100
1  Microsoft  2017      120
2   Facebook  2017       80
3     Google  2018      150
4  Microsoft  2018      130
5   Facebook  2018      100
根据单个列拆分

我们首先看一下如何根据单个列将数据框拆分成多个数据框或组。

为了分组,我们可以使用 Pandas 中的 groupby() 函数。下面的示例演示了如何使用 groupby() 函数将数据框按公司名称进行分组:

groups = df.groupby('Company')
for name, group in groups:
    print(name)
    print(group)

输出:

Facebook
    Company  Year  Revenue
2  Facebook  2017       80
5  Facebook  2018      100
Google
  Company  Year  Revenue
0  Google  2017      100
3  Google  2018      150
Microsoft
     Company  Year  Revenue
1  Microsoft  2017      120
4  Microsoft  2018      130

如上所示,groupby() 函数将数据框按公司名称分成了 3 个组。

根据多个列拆分

接下来,我们演示如何根据多个列将数据框拆分成多个数据框或组。这时,我们需要在 groupby() 函数中传递多个列名作为分组依据。

下面的示例演示了如何使用 groupby() 函数将数据框按公司名称和年份进行分组:

groups = df.groupby(['Company', 'Year'])
for name, group in groups:
    print(name)
    print(group)

输出:

('Facebook', 2017)
    Company  Year  Revenue
2  Facebook  2017       80
('Facebook', 2018)
    Company  Year  Revenue
5  Facebook  2018      100
('Google', 2017)
  Company  Year  Revenue
0  Google  2017      100
('Google', 2018)
  Company  Year  Revenue
3  Google  2018      150
('Microsoft', 2017)
     Company  Year  Revenue
1  Microsoft  2017      120
('Microsoft', 2018)
     Company  Year  Revenue
4  Microsoft  2018      130

如上所示,我们按公司名称和年份将数据分成了 6 个组。

结论

在 Pandas 中,我们可以使用 groupby() 函数轻松地根据一个或多个列将数据框拆分成多个数据框或组。这个操作在处理数据时非常有用。