df.drop_duplicates отбрасывает слишком много записей - PullRequest
1 голос
/ 06 ноября 2019

Я использую Python 3.6 для чтения в CSV-файл из BoardEX. Я знаю, что в данных много повторяющихся записей.

main = pd.read_csv("C:/Users/theca/Downloads/579b97d48dc72c8e.csv", encoding = 'ISO-8859-1')

main.head()

enter image description here

Мне нужно задать под "BoardID"

main["BoardID"].nunique()

191

Это хорошо, я думаю.

Размер набора данных равен 300 на 6.

Но когда я это сделаю:

main.drop_duplicates(subset ="BoardID", 
                     keep = False, inplace = True)

Результат будет чем-то другим?

main.shape
(101, 6)

Почему nunique число 191, а число после drop_duplicates равно 101?

Тогда, может быть, кто-нибудь может любезно подсказать мне, как подставить значение 191, а не значение 101?

1 Ответ

2 голосов
/ 06 ноября 2019

Поскольку при использовании параметра keep = False:

main = pd.DataFrame({'BoardID':[1,1,2,3,4,4,4],
                     'Revenue':[4,1,2,5,4,5,7]})

main.drop_duplicates(subset ="BoardID", 
                     keep = False, inplace = True)
print (main)
   BoardID  Revenue
2        2        2
3        3        5

удаляются только дублированные значения, уникальные строки не пропускаются.

Для одинаковой длины необходимо keep = 'first' для первого уникального и дублированногозначения:

main.drop_duplicates(subset ="BoardID", 
                     keep = 'first', inplace = True)

то же самое, что опущено, потому что параметр по умолчанию:

main = pd.DataFrame({'BoardID':[1,1,2,3,4,4,4],
                     'Revenue':[4,1,2,5,4,5,7]})

main.drop_duplicates(subset ="BoardID", inplace = True)
print (main)
   BoardID  Revenue
0        1        4
2        2        2
3        3        5
4        4        4
...