pandas 选择n个具有特定行的唯一组合的行

bxpogfeg  于 2023-01-19  发布在  其他
关注(0)|答案(2)|浏览(132)

我有一个包含A、B、C和D列的 Dataframe 。A是最粗糙的,许多行都具有相同的A值,B更精细,C更精细,依此类推。我想选择具有唯一A值、B值组合的n行。

A    B    C    D
0   a1   b1   c1   d1
1   a1   b1   c2   d2
2   a1   b2   c3   d3
3   a1   b2   c4   d4
4   a2   b3   c5   d5
5   a2   b3   c6   d6
6   a2   b4   c7   d7
7   a2   b4   c8   d8

在上面的示例中,我希望选择这样的行:1对于每个唯一的A值B值组合都有1行。
这种选择的一个例子是

A    B    C    D
0   a1   b1   c1   d1
2   a1   b2   c3   d3
4   a2   b3   c5   d5
6   a2   b4   c7   d7

我该如何优雅地对待Pandas呢?

flvlnr44

flvlnr441#

您可以进行分组,然后使用.head()

df.groupby(['A', 'B']).head(1)
A   B   C   D
0  a1  b1  c1  d1
2  a1  b2  c3  d3
4  a2  b3  c5  d5
6  a2  b4  c7  d7
iqih9akk

iqih9akk2#

你可以简单地对AB的列子集执行drop_duplicates,根据keep参数的定义,你总是得到一个组合的第一行或最后一行,或者你用groupby.sample对你的数据进行groupby,得到每组的随机行。

df.drop_duplicates(subset=['A', 'B'])

#or

df.groupby(['A', 'B']).sample()

相关问题