问题描述
希望你一切顺利。 所以我想删除特定数量的重复行。让我通过一个例子来解释:
import React,{useState} from 'react'
所以我们有基于 A 列的重复行,因此对于 'foo' 我想删除 2 个重复行,例如对于 'xxx' 我只想删除一行。 方法 drop_duplicates 可以保留 0 或 1 行,所以它对我没有帮助。
提前致谢。
解决方法
可能不是最佳解决方案,但此方法有效:
df = pd.DataFrame({
'A': ['foo','foo','bar','xxx','xxx'],'B': [2,np.nan,1,8,9,4,9],'C': [3,10,6]
})
nb_drops = {'foo':2,'xxx':1}
df2 = pd.DataFrame()
for k,v in nb_drops.items():
df2 = df2.append(df[df['A'] == k].head(v))
df = df.drop_duplicates(subset=['A'])
df = df.merge(df2,how='outer')
df
给予
A B C
0 foo 2.0 3.0
1 bar 8.0 NaN
2 xxx 9.0 10.0
3 foo NaN 9.0
,
我制作了这个代码并且它有效......
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': ['foo',6]
nb_drops = {'foo':2,'xxx':1}
rows_to_delete = []
for item in nb_drops :
indices_item = list(df[df['A'] == item].index)
rows_to_delete += range(indices_item[-1] - nb_drops[item] + 1,indices_item[-1] + 1)
df.drop(rows_to_delete,inplace = True)