我正在尝试在 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/