使用 Pandas 将重复项提取到新数据框中

Dra*_*och 1 python duplicates dataframe pandas

我有一个包含许多列的大型数据框。其中一列应该是唯一 ID,另一列是年份。不幸的是,Unique ID 列中有重复项。

我知道如何生成所有重复项的列表,但我真正想做的是将它们提取出来,以便只保留第一个条目(按年份)。例如,数据框目前看起来像这样(还有一堆其他列):

ID    Year
----------
123   1213
123   1314
123   1516
154   1415
154   1718
233   1314
233   1415
233   1516
Run Code Online (Sandbox Code Playgroud)

我想要做的是将此数据框转换为:

ID    Year
----------
123   1213
154   1415
233   1314
Run Code Online (Sandbox Code Playgroud)

在仅将那些重复项存储在另一个数据帧中时:

ID    Year
----------
123   1314
123   1516
154   1415
233   1415
233   1516
Run Code Online (Sandbox Code Playgroud)

我可以逐年删除重复项以保留最旧的条目,但我不确定如何将重复项放入我可以存储为另一个数据框的列表中。

我该怎么做?

Zer*_*ero 5

duplicated

In [187]: d = df.duplicated(subset=['ID'], keep='first')

In [188]: df[~d]
Out[188]:
    ID  Year
0  123  1213
3  154  1415
5  233  1314

In [189]: df[d]
Out[189]:
    ID  Year
1  123  1314
2  123  1516
4  154  1718
6  233  1415
7  233  1516
Run Code Online (Sandbox Code Playgroud)