python - 如何在使用 getduplicates() 时从已弃用的代码切换

标签 python python-3.x pandas

我正在尝试在 pandas 代码弃用之前对其进行升级。目标是检查是否存在重复的 ID,然后选择所述 ID 的行。 ID 设置为 my_data(我正在使用的 pandas Dataframe)的索引。 代码如下:

dups = my_data.index.get_level_values('ID').get_duplicates()

返回以下警告:

FutureWarning: 'get_duplicates' is deprecated and will be removed in a    future release. You can use idx[idx.duplicated()].unique() instead
"""Entry point for launching an IPython kernel.

然后当我运行时:

duplicates = my_data.loc[dups]

它返回一个 pandas Dataframe,其中包含 ID 级别上的所有重复项(这是我的最终目标)。

据我了解,pandas.Dataframe没有名为 idx 的方法或属性。 我尝试使用以下内容:

dups = pd.Index(my_data).duplicated()

它返回一个包含 bool 值的 numpy ndarray,我稍后无法使用该值在单独的 DataFrame 中加载重复行。

有什么想法吗?

最佳答案

使用Index.duplicated使用 keep=False 作为欺骗的返回掩码,因此可以按 boolean indexing 进行过滤:

my_data = pd.DataFrame({'A':[ 4,0,0,10,0,0],
                        'B':[ 0,2,0,0,0,0],
                        'ID':list('aabdcd')}).set_index(['ID','A'])


print (my_data)
       B
ID A    
a  4   0
   0   2
b  0   0
d  10  0
c  0   0
d  0   0


dups = my_data.index.get_level_values('ID').duplicated(keep=False)
duplicates = my_data[dups]
print (duplicates)
       B
ID A    
a  4   0
   0   2
d  10  0
   0   0

关于python - 如何在使用 getduplicates() 时从已弃用的代码切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56666313/

相关文章:

python - PyQt 无法使用 text() 从 QlineEdit 获取文本

python - 我可以给 matplotlib 绘图函数中的一条线添加边框(轮廓)吗?

javascript - Transcrypt 在导入 json 时出现无法导入编解码器错误

python - 使用 python 脚本推断 excel 文件中的数据

python - Pandas 数据框 : how do I split one row into multiple rows by multi-value column?

python - Django:如何重新分发包含可扩展 HTML 模板的项目/应用程序?

python - Django 权限属于组,但该组上的用户没有组的权限

python - 如何在 Python 中组合重叠的矩形

python - 如何将 beautifulsoup 文本转换为列表或可迭代对象

python - 在另一列中查找具有相同值的行 - Python