保持N首次出现

时间:2014-06-11 20:22:15

标签: python pandas

以下代码(当然)只会在按“日期”排序的行中保留第一次出现的“Item1”。关于如何保持它的任何建议,比如前5次出现?

## Sort the dataframe by Date and keep only the earliest appearance of 'Item1'
## drop_duplicates considers the column 'Date' and keeps only first occurence

coocdates = data.sort('Date').drop_duplicates(cols=['Item1'])

2 个答案:

答案 0 :(得分:1)

您想在数据框本身或head上使用on the groupby

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [1, 6], [2, 8]], columns=['A', 'B'])

In [12]: df
Out[12]:
   A  B
0  1  2
1  1  4
2  1  6
3  2  8

In [13]: df.head(2)  # the first two rows
Out[13]:
   A  B
0  1  2
1  1  4

In [14]: df.groupby('A').head(2)  # the first two rows in each group
Out[14]:
   A  B
0  1  2
1  1  4
3  2  8

注意:groupby的头部行为在0.14中有所改变(它没有像过滤器一样 - 但修改了索引),因此如果使用更早的版本,则必须重置索引版本

答案 1 :(得分:0)

使用groupby()nth()

根据Pandas docsnth()

  

如果n是int,则从每个组获取第n行;如果n是int列表,则从行的子集获取。

因此,您只需要:

df.groupby('Date').nth([0,1,2,3,4]).reset_index(drop=False, inplace=True)