在Pandas中分组数据帧?

2024-04-25 23:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python和dataframes还很陌生。假设数据帧如下所示:

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”,然后找到这些对。 我遵循熊猫官方文件,但我似乎找不到这个。你知道吗


Tags: 文件数据官方方式dataframes陌生
3条回答

您可以使用^{} 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

另请参见^{}以获取唯一元素的数量。

不知道我是否明白,但这可能会让你走:

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]

你可以试试这个:

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

相关问题 更多 >