你可以這樣做:
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