我一直在尝试使用 value_counts 获取多列的计数。现在,我可以在一个列上运行它,但不能在多个列上运行。
编辑:我之前需要对唯一 ID 进行计数,因此需要对“id”进行计数,但现在我想要对“id”下的服务进行计数。我正在编辑以下数据以更准确地解释情况。
import pandas as pd
d = {'id': [1, 1, 2, 3, 3], 'service': [3, 3, 4, 2, 3], 'name': ['Joe', 'Joe', 'Bob', 'Val', 'Val']}
df = pd.DataFrame(data=d)
df['count'] = df['id'].map(df['id'].value_counts())
如果我尝试
df['count'] = df['id'].map(df['id']['service'].value_counts())
我在服务中遇到 KeyError。
如果我尝试
df['count'] = df['id']['service'].map(df['id'].value_counts())
我也遇到同样的错误。
我希望得到以下内容:
id service 1 , 3: 2
id service 2 , 4: 1
id service 3 , 2: 1
id service 3 , 3: 1
我使用了错误的函数吗?
最佳答案
有几种方法。使用 groupby
并使用 count
,或者创建一个元组列并应用 value_counts
。
这两种方法都提供可以通过元组索引的结果。
设置
import pandas as pd
d = {'id': [1, 2, 1], 'service': [3, 4, 3], 'name': ['Joe', 'Bob', 'Mark']}
df = pd.DataFrame(d)
分组方法
按照@Dark的建议:
res = df.groupby(['id', 'service']).count()
# name
# id service
# 1 3 2
# 2 4 1
元组列法
df['id_service'] = list(zip(df.id, df.service))
res = df['id_service'].value_counts()
# (1, 3) 2
# (2, 4) 1
# Name: id_service, dtype: int64
关于python - 使用 value_counts 查找列组合中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49367161/