计算重复值,删除重复并保留计数和其他列

Posted

技术标签:

【中文标题】计算重复值,删除重复并保留计数和其他列【英文标题】:Count duplicated values, delete duplicates and keep count and other columns 【发布时间】:2019-09-16 05:37:36 【问题描述】:

我正在使用 excel 文件格式设置大约 10 000 行和 55 列的数据集。我选择要显示的相关列(数字和日期)。

现在,“数字”列有许多重复的值,我想计算然后删除重复项。同时我想显示该号码的最新使用日期。

举个例子:

Column 1 = Numbers [445, 446, 447, 449, 445, 451, 445, 466, 449, ...]
Column 2 = Date [4/26/2019,3/26/2019,3/15/2019,2/26/2019,12/26/2018,12/16/2018,11/26/2018,11/6/2018,11/01/2019,... ]

445和447是重复值; 445统计3次,449统计2次在不同的日期。

然后我要创建的表是:

Column 1 = Numbers [445, 446, 447, 449, 451, 466, ...]
Column 2 = Date [4/26/2019,3/26/2019,3/15/2019,2/26/2019,12/16/2018,11/6/2018,,...]
Column 3 = Count [3,1,1,2,1,1,...]

即新表中要保留的日期是使用该数字的最晚日期。

import pandas as pd

data = pd.read_excel(r'ImportedFile.xlsx', header = 0)
df = data[['Number','Date']]
sold_total = df.pivot_table(index=['Number'], aggfunc='size')

接下来要做什么? 谢谢

【问题讨论】:

检查df 的形状,然后使用drop_duplicates() 和keep='last' 并从旧形状中减去新形状 【参考方案1】:

试试:

# thanks anky_91 for reset_index()
df.groupby('Number').Date.agg(['max', 'count']).reset_index()

输出:

+----+----------+---------------------+---------+
|    |   Number | max                 |   count |
|----+----------+---------------------+---------|
|  0 |      445 | 2019-04-26 00:00:00 |       3 |
|  1 |      446 | 2019-03-26 00:00:00 |       1 |
|  2 |      447 | 2019-03-15 00:00:00 |       1 |
|  3 |      449 | 2019-11-01 00:00:00 |       2 |
|  4 |      451 | 2018-12-16 00:00:00 |       1 |
|  5 |      466 | 2018-11-06 00:00:00 |       1 |
+----+----------+---------------------+---------+

【讨论】:

如何使用漂亮的 SQL 样式表自动格式化为字符串? @ifly6:我使用tabulate 包。【参考方案2】:

用途:

df['Count']=df.groupby('Column_1').transform('count')
df=df.drop_duplicates('Column_1')
print(df)

   Column_1   Column_2  Count
0       445 2019-04-26      3
1       446 2019-03-26      1
2       447 2019-03-15      1
3       449 2019-02-26      2
5       451 2018-12-16      1
7       466 2018-11-06      1

【讨论】:

以上是关于计算重复值,删除重复并保留计数和其他列的主要内容,如果未能解决你的问题,请参考以下文章

怎么删除ACCESS中的重复记录 只保留一条

怎么样删除excel表中的所有重复的数据,不保留初始数据

C# 处理DataTable 重复数据

根据不同列中的值删除重复项

Excel VBA - 保留指定列并删除所有其他列

C# 处理DataTable 重复数据