你可以这样做:
import pandas
df = pandas.DataFrame({"id": [1, 2, 3, 4], "name": ["sam", "sam", "peter", "jack"], "number": [8, 8, 8, 2]})
g = df.groupby(["name", "number"])
print g.groups
这给:
{('jack', 2): [3], ('peter', 8): [2], ('sam', 8): [0, 1]}
获得的数每对可以做的唯一条目:
for p in g.groups:
print p, " has ", len(g.groups[p]), " entries"
这给:
('peter', 8) has 1 entries
('jack', 2) has 1 entries
('sam', 8) has 2 entries
更新:
的OP要求导致数据帧。得到这个的一种方法是使用aggregate
,长度功能,这将返回一个数据帧,每对独特的条目数:
d = g.aggregate(len)
print d.reset_index().rename(columns={"id": "num_entries"})
给出:
name number num_entries
0 jack 2 1
1 peter 8 1
2 sam 8 2
来源
2016-02-01 15:55:15
mvd
/@用户你的表是没有意义的有1计数1,它应该是2,有2个2的数字,2个“山姆”和2个8的数字,请给出一个清晰的例子数据和输出。 – Merlin