pandas相当于SQL的distinct

Bru*_*uce 2 python dataframe pandas

我有一个包含多列的数据框,我想以 SQL“选择不同”操作的方式提取唯一的行。到目前为止,每当我查找有关此问题的论坛时,我都会找到有关计算不同值(但我想要实际值)或(更糟糕)的评论,这些值在两列中不同,只是作为一组连接在一起(使用ravel)。我想要的是,例如对于两列,成对不同的值和作为数据框的结果。

我现在正在考虑,最有效的方法可能是自己编写 - 对元组进行稳定排序,然后扫描重复项。任何不比本质上简单的 pandas 表达式都不能回答这个问题。我正在寻找基本或简单的复合操作。


对于那些不知道查询中的“不同”的作用的人......

从...开始

1 2
2 3
1 2
4 5
2 3
2 1
Run Code Online (Sandbox Code Playgroud)

我们回来了

1 2
2 3
4 5
2 1
Run Code Online (Sandbox Code Playgroud)

注意 - 所提出的问题是否应将 (2,1) 和 (1,2) 视为相同。不,因为元组是有序的。再次强调 - 有关详细信息,请参阅 SQL 的行为。

小智 5

要获取给定列的唯一值,请尝试pandas.Series.unique()

values = df['column_name'].unique()
Run Code Online (Sandbox Code Playgroud)

要获得给定列的唯一组合,请尝试pandas.DataFrame.drop_duplicates()

df.drop_duplicates(subset=['colmun_name1', 'column_name2'])
Run Code Online (Sandbox Code Playgroud)