如何获得多索引数据框上的最后日期。
我将df简化为以下内容:
Dates =['01/10/2017', '28/10/2018', '20/10/2019', '27/10/2019', '30/10/2019']
cols = ['Date', 'P1', 'P2', 'P3']
ProductIDs = [1, 1, 1, 3, 5]
df= pd.DataFrame(index = ProductIDs, columns= cols)
df.index.name = 'ProductIDs'
df.Date = Dates
df = df.reset_index().set_index(['ProductIDs', 'Date'])
df[:] = np.random.randint(0,20, size=(5,3))
df
P1 P2 P3
ProductIDs Date
1 01/10/2017 3 2 2
28/10/2018 1 4 9
20/10/2019 3 14 3
3 27/10/2019 3 1 7
5 30/10/2019 2 13 4
df.groupby(level=[0]).last()
给我想要的结果,不包括日期。我怎么也可以看到日期?
我怎样才能得到:
P1 P2 P3
ProductIDs Date
1 20/10/2019 3 14 3
3 27/10/2019 3 1 7
5 30/10/2019 2 13 4
首先通过提取第一级的值,通过提取get_level_values
重复项,duplicated
并通过反转条件~
。最后筛选者boolean indexing
:
df1 = df[~df.index.get_level_values(0).duplicated(keep='last')]
print (df1)
P1 P2 P3
ProductIDs Date
1 28/10/2018 19 0 8
3 27/10/2019 16 2 3
5 30/10/2019 14 6 8
详情:
print (df.index.get_level_values(0))
Int64Index([1, 1, 3, 5], dtype='int64', name='ProductIDs')
print (df.index.get_level_values(0).duplicated(keep='last'))
[ True False False False]
print (~df.index.get_level_values(0).duplicated(keep='last'))
[False True True True]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句