我对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"并找到那些对。 我正在遵循官方的熊猫文档,但我似乎无法找到它。
答案 0 :(得分: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]
答案 1 :(得分: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 :(得分: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
以获取唯一元素的数量。