python - Pandas:如何删除特定数量的重复行?
问题描述
我希望你一切都好。所以我想删除特定数量的重复行。让我通过一个例子来解释:
A B C
0 foo 2 3
1 foo nan 9
2 foo 1 4
3 bar 8 nan
4 xxx 9 10
5 xxx 4 4
6 xxx 9 6
因此,我们基于 A 列复制了行,因此对于“foo”,我想删除 2 个重复行,对于“xxx”,我只想删除一行。drop_duplicates 方法可以保留 0 行或 1 行,所以它对我没有帮助。
提前致谢。
解决方案
可能不是最佳解决方案,但这个可行:
df = pd.DataFrame({
'A': ['foo','foo','foo','bar','xxx','xxx','xxx'],
'B': [2,np.nan,1,8,9,4,9],
'C': [3,9,4,np.nan,10,4,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
推荐阅读
- python - python中的子进程不产生输出
- python - 无论选项卡是否打开,我如何才能运行此代码?
- android - onCallAdded的回调如何获取当前设备的电话号码和SIM卡槽?
- git - Git 合并请求和分支策略
- python - PyMySQL:- OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection denied)")
- macos - macOS nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
- python-2.7 - 附加列表但得到“AttributeError:'NoneType'对象没有属性'append'”Python 2.7
- qa - 使用 Android 的日志进行猴子测试
- performance - 这两个将ll转换为可执行文件的命令脚本有什么不同?
- python - 如何在kivymd python中以编程方式检查MDDataTables复选框