按列排序,仅保留第一行,直到列1中的下一个值

时间:2019-03-19 17:22:45

标签: python pandas sorting duplicates

我有一个大约有10m行的文件。每行很可能是唯一的,但我将按第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 个答案:

答案 0 :(得分:2)

先尝试groupby,然后再尝试:

a.groupby([data.columns[0],data.columns[1]], as_index=False).first()

答案 1 :(得分:1)

您的解决方案几乎是正确的。此版本是修改后的版本:

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

解释修改:

    如您在drop_duplicates的文档中所见,
  1. subset 是一个命名参数;
  2. 如果第3列可以变化,则不应在subset参数上显示该列。重复项应考虑前两列;
  3. 您在代码中使用的名称不一致,为明显相同的对象命名为和;