**在Pandas中有没有一种方法可以检查 Dataframe 列是否有重复的值,而不需要删除行?**我有一个函数可以删除重复的行,但是,我只希望它在特定列中确实有重复值时运行。
目前我比较列中唯一值的数量和行数:如果唯一值少于行,则存在重复值并且代码运行。
if len(df['Student'].unique()) < len(df.index):
# Code to remove duplicates based on Date column runs
有没有一种更简单或更有效的方法可以使用Pandas来检查特定列中是否存在重复值?
我正在处理的一些示例数据(只显示了两列)。如果发现重复,则另一个函数确定要保留哪一行(日期最早的行):
Student Date
0 Joe December 2017
1 James January 2018
2 Bob April 2018
3 Joe December 2017
4 Jack February 2018
5 Jack March 2018
4条答案
按热度按时间mzaanser1#
主要问题
列中是否存在重复值,True/False?
假设上述 Dataframe (df),我们可以通过以下方式快速检查
Student
列中是否存在重复数据:进一步阅读和参考
上面我们使用的是Pandas系列的一种方法。PandasDataFrame有几个有用的methods,其中两个是:
这些方法可以作为一个整体应用于DataFrame,而不仅仅是上面提到的Serie(列)。
但是,如果我们对整个框架感兴趣,我们可以继续进行以下操作:
还有最后一个有用的技巧,通过使用
keep
参数,我们通常可以跳过几行直接访问我们需要的内容:保留:{“第一个”,“最后一个”,False},默认值为“第一个”
可供参考的示例
返回
x8diyxa72#
您可以使用
is_unique
:需要更老的Pandas版本:
v7pvogib3#
如果您想知道有多少重复项以及它们使用的是什么:
p5fdfcr14#
除了
DataFrame.duplicated
和Series.duplicated
,Pandas还有DataFrame.any
和Series.any
。在Python ≥3.8的情况下,检查重复项并访问一些重复行: