2015-11-12 179 views
4

我對Python大熊貓和使用數據框非常新。比方說,我有如下數據框:在熊貓中分組數據框?

A B C 

3 2 3 
4 2 4 
3 2 1 
5 6 6 

我想找到我的數據幀有多少行有A和B柱和這些行我想存儲C值相同的值。因此,例如在這個數據框中,我想存儲第一個和第三個C值,因爲每個這些行中的A和B具有相同的值。基本上我想要一種打印方式: 「對於A = 3和B = 2,可能的C值是:3,1」並找到這些對。 我遵循官方的熊貓文檔,但我似乎無法找到這個。

回答

2

不知道如果我按照但這可能讓你去:

df = DataFrame({"a": [3,4,3,5], "b":[2,2,2,6], "c": [3,4,1,6]}) 
In [38]: for i, g in df.groupby(("a", "b")): 
      print i, g["c"].values 
     ....: 
(3, 2) [3 1] 
(4, 2) [4] 
(5, 6) [6] 
+0

哇這很快,是的,這是我想要的。還有一件事,是否可以只打印那些c值超過2的值?我想隱藏只有一個c值的a,b組合。 – user1823812

+2

off top of head可以使用:if g [「c」]。shape [0]> 1:print yada yada – reptilicus

2

你可以試試這個:

In [187]: df 
Out[187]: 
    A B C 
0 3 2 3 
1 4 2 4 
2 3 2 1 
3 5 6 6 

In [188]: df[df.groupby(['A', 'B']).transform(np.count_nonzero).C>=2] 
Out[188]: 
    A B C 
0 3 2 3 
2 3 2 1 
Name: C, dtype: float64 
2

可以使用unique SeriesGroupBy method

In [11]: df.groupby(["A", "B"])["C"].unique() 
Out[11]: 
A B 
3 2 [3, 1] 
4 2  [4] 
5 6  [6] 
Name: C, dtype: object 

見還得到nunique以獲得唯一元素的數量。