从熊猫的数据框中随机选择唯一的行

HMK*_*HMK 4 python dataframe pandas

假设我有一个表格的数据框,rn行索引在哪里

       A1  |  A2 |  A3 
      -----------------
r1     x   |  0  |  t
r2     y   |  1  |  u
r3     z   |  1  |  v
r4     x   |  2  |  w
r5     z   |  2  |  v
r6     x   |  2  |  w
Run Code Online (Sandbox Code Playgroud)

如果我想对这个数据框进行子集化,使得 A2 列只有唯一值,我会使用df.drop_duplicates('A2'). 但是,这只会保留唯一值的第一行并删除其余部分。对于此示例,只有 r2 和 r4 将在子集中。

我想要的是随机选择具有重复值的任何行而不是第一行。因此,对于此示例,A2 == 1随机选择for 、r2 或 r3 或随机选择A2 == 2r4、r5 或 r6 中的任何一个。我将如何实施这个?

ayh*_*han 6

首先对 DataFrame 进行 Shuffle,然后删除重复项:

df.sample(frac=1).drop_duplicates(subset='A2')
Run Code Online (Sandbox Code Playgroud)

如果行的顺序很重要,您可以将其sort_index用作@c???s???? 建议:

df.sample(frac=1).drop_duplicates(subset='A2').sort_index()
Run Code Online (Sandbox Code Playgroud)