以下代码(当然)只会在按“日期”排序的行中保留第一次出现的“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'])
答案 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 docs,nth()
如果n是int,则从每个组获取第n行;如果n是int列表,则从行的子集获取。
因此,您只需要:
df.groupby('Date').nth([0,1,2,3,4]).reset_index(drop=False, inplace=True)