Сортировать по столбцам и сохранять только первую строку до следующего значения в столбце 1 - PullRequest
1 голос
/ 19 марта 2019

У меня есть файл с примерно 10 м строк.Каждая строка, скорее всего, уникальна, но я сортирую файл по столбцу 1, затем 2, затем 3.

Column 1 = CODE
Column 2 = DATE
Column 3 = AMOUNT

Я хочу сохранить только первую строку до следующей даты и так далее.Ниже приведен пример того, что у меня есть и что мне нужно для вывода.

Original:  
COL1   COL2         COL3  
ABA    2019-01-01   100  
ABA    2019-01-01   111  
ABA    2019-01-02   140  
ABA    2019-01-02   150  
ABA    2019-01-03   200  
ABA    2019-01-03   220  

Ouptut needed:  
COL1   COL2         COL3  
ABA    2019-01-01   100  
ABA    2019-01-02   140  
ABA    2019-01-03   200  

Любой, кто сможет мне помочь.Пытался

a.drop_duplicates(subset[data.columns[0],data.columns[1],data.columns[2]], keep='first')

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

попробуйте сгруппировать, а затем сначала:

a.groupby([data.columns[0],data.columns[1]], as_index=False).first()
1 голос
/ 19 марта 2019

Ваше решение почти правильное. Эта версия является модифицированной версией:

>> a.drop_duplicates(subset = [a.columns[0],a.columns[1]], keep='first')

Что производит:

    COL1    COL2        COL3
0   ABA     2019-01-01  100
2   ABA     2019-01-02  140
4   ABA     2019-01-03  200

Объяснение модификаций:

  1. subset является именованным параметром, как вы можете видеть из документации drop_duplicates ;
  2. если столбец 3 может изменяться, он не должен присутствовать в параметре подмножества. Дубликат должен учитывать первые 2 столбца;
  3. имена, которые вы использовали в коде, не согласованы, с именами a и данными для одного и того же объекта;
...