python - 对 DataFrame 进行排序,将重复项移至末尾
问题描述
我有一个包含 number 的列表[1,1,2,2,3,3]
。如何将此列表排序到[1,2,3,1,2,3]
?
让我详细说明它的用途。我有一个熊猫数据框
columnA columnB columnC
A a 1
A a 1
A b 2
A b 2
B a 1
B a 1
B b 2
B b 2
我想让它重新排序,如下所示:
columnA columnB columnC
A a 1
A b 2
A a 1
A b 2
B a 1
B b 2
B a 1
B b 2
我试过 sort_values 函数,但它似乎不起作用。
解决方案
这是一个GroupBy.cumcount
用于计算重复值并将此计数用作将重复项移至末尾的键的解决方案:
import pandas as pd
df = pd.read_csv('dataduplicates.csv')
df['duplicate_key'] = df.groupby('columnC').cumcount()
df.sort_values(['duplicate_key', 'columnC'], inplace=True)
print(df)
# columnA columnB columnC duplicate_key
# 0 A a 1 0
# 2 A b 2 0
# 1 A a 1 1
# 3 A b 2 1
# 4 B a 1 2
# 6 B b 2 2
# 5 B a 1 3
# 7 B b 2 3
推荐阅读
- ruby-on-rails - 打开电子邮件中的链接时如何显示带有警报的模式(Rails6+Bootstrap4)
- crystal-reports-2011 - Crystal Report 循环直到 True 和返回值
- c - volatile 数组上的并发更改是否对所有线程都是原子的且可见的?
- python-3.x - 如何使用通配符在使用 python 的 Outlook 中查找电子邮件?
- c# - 我需要序列化它以保存到文件吗?
- network-programming - 我可以删除 .p4 程序中的数据包负载吗?
- mysql - MYSQL 查询一直超时
- angular - Angular 12 - CORS 阻止了我的请求:请求的资源上不存在“Access-Control-Allow-Origin”标头
- python - 什么是“支持索引”?
- c# - 如何从 C# 运行用 C# 编写的 Selenium/xUnit 测试