df.unique() 基于列的整个 DataFrame

Posted

技术标签:

【中文标题】df.unique() 基于列的整个 DataFrame【英文标题】:df.unique() on whole DataFrame based on a column 【发布时间】:2017-08-28 07:28:32 【问题描述】:

我有一个 DataFrame df 填充有重复 ID 的行和列:

Index   Id   Type
0       a1   A
1       a2   A
2       b1   B
3       b3   B
4       a1   A
...

当我使用时:

uniqueId = df["Id"].unique() 

我得到一个唯一 ID 列表。

但是,我怎样才能在整个 DataFrame 上应用此过滤,以便它保留结构但删除重复项(基于“Id”)?

【问题讨论】:

【参考方案1】:

您似乎需要 DataFrame.drop_duplicates 和参数 subset 来指定测试重复的位置:

#keep first duplicate value
df = df.drop_duplicates(subset=['Id'])
print (df)
       Id Type
Index         
0      a1    A
1      a2    A
2      b1    B
3      b3    B

#keep last duplicate value
df = df.drop_duplicates(subset=['Id'], keep='last')
print (df)
       Id Type
Index         
1      a2    A
2      b1    B
3      b3    B
4      a1    A

#remove all duplicate values
df = df.drop_duplicates(subset=['Id'], keep=False)
print (df)
       Id Type
Index         
1      a2    A
2      b1    B
3      b3    B

【讨论】:

以上是关于df.unique() 基于列的整个 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种有效的方法来计算 Pandas 中的列值,使用基于其他列的条件值的前行的值?

索引如何加快搜索速度? [复制]

打印整个数据库列的方法

带有星形列的 DataGrid 调整整个 DataGrid 的大小

如何从日期中查找整个日期列的工作日

如何删除包含 alpha 值或整个 dbf 列的 dbf 行