在pandas中如何对数据框进行分组?

4

我是一名新手,对于Python的pandas和数据框架还不熟悉。假设我有如下所示的数据框:

A B C

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

我想找出数据框中有多少行的A列和B列具有相同值,并对这些行存储C列的值。例如,在这个数据框中,我想存储第1行和第3行的C值,因为每行的A和B具有相同的值。基本上,我想要一种打印类似于:"对于A = 3和B = 2,可能的C值是:3,1"并找到这些配对的方法。

我正在遵循官方pandas文档,但似乎找不到这个功能。

3个回答

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]

哇,这很快,而且这就是我想要的。只有一个问题,是否可以仅打印那些具有超过2个c值的组合?我想隐藏那些只有一个c值的a、b组合。 - user1823812
2
如果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 方法
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 以获取唯一元素数量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接