计算pandas中两列唯一组合的数量(方法指南)

747 阅读1分钟

你可以使用以下语法来计算pandas DataFrame中两列的唯一组合的数量。

df[['col1', 'col2']].value_counts().reset_index(name='count')

下面的例子展示了如何在实践中使用这种语法。

例子:计算pandas中两列的唯一组合

假设我们有如下的pandas DataFrame,显示了各种篮球运动员的球队位置

import pandas as pd

#create dataFrame
df = pd.DataFrame({'team': ['Mavs', 'Mavs', 'Mavs', 'Mavs',
                            'Heat', 'Heat', 'Heat', 'Heat'],
                   'position': ['Guard', 'Guard', 'Guard', 'Forward',
                                'Guard', 'Forward', 'Forward', 'Guard']})
#view DataFrame
df

        team	position
0	Mavs	Guard
1	Mavs	Guard
2	Mavs	Guard
3	Mavs	Forward
4	Heat	Guard
5	Heat	Forward
6	Heat	Forward
7	Heat	Guard

我们可以使用下面的语法来计算球队位置的唯一组合的数量:

df[['team', 'position']].value_counts().reset_index(name='count')

        team	position  count
0	Mavs	Guard	  3
1	Heat	Forward	  2
2	Heat	Guard	  2
3	Mavs	Forward	  1

从输出结果中我们可以看到:

  • Mavs-Guard的组合有3次出现
  • 热火队-前锋的组合有2次出现
  • 热火-后卫的组合有2次出现
  • Mavs-Forward的组合有1次出现

请注意,你也可以将结果按计数升序或降序排序。

例如,我们可以用下面的代码对结果按计数升序进行排序:

df[['team', 'position']].value_counts(ascending=True).reset_index(name='count')

        team	position  count
0	Mavs	Forward	  1
1	Heat	Forward	  2
2	Heat	Guard	  2
3	Mavs	Guard	  3

现在的结果是按计数从小到大排序的:

注意:你可以在这里找到pandasvalue_counts()函数的完整文档。

其他资源

下面的教程解释了如何在pandas中执行其他常见任务:

Pandas:如何使用GroupBy和Value Counts
Pandas:如何使用GroupBy与Bin Counts
Pandas:如何用数值计数创建Pivot表