Подсчет дублированных значений, удаление дубликатов и ведение подсчета и других столбцов - PullRequest
1 голос
/ 26 апреля 2019

Я устанавливаю набор данных из примерно 10 000 строк и 55 столбцов из файла формата Excel.Я выбираю соответствующий столбец для отображения (номер и дата).

Теперь в столбце «Число» есть много дублированных значений, которые я хочу подсчитать, и затем удаляю дубликаты.В то же время я хочу показать самую последнюю дату, когда использовалось число.

Введите пример:

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 раза в разные даты.

Таблица, которую я хочу создать:самая поздняя дата использования номера.

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')

Что будет дальше?Спасибо

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Попробуйте:

# 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 |
+----+----------+---------------------+---------+
1 голос
/ 26 апреля 2019

Использование:

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
...