我有一个多索引的dataframe,如下所示:
ts ts2
2018-05-24 23:00:00 2018-05-24 00:00:00 5
2018-05-24 00:15:00 4
2018-05-24 00:30:00 6
2018-05-24 00:45:00 7
对于索引1中的每个日期时间,我希望得到索引2的最大值:
2018-05-24 23:00:00 2018-05-24 00:45:00 7
这不是很难,但不知何故我应付不了。
我尝试了一个for循环切片
for ts, new_df in df.groupby(level=0):
print(new_df)
这导致了每吨新的数据.此外,我还可以获得new_df的最大索引
new_df.index.max()
有了这些信息,我应该能够选择正确的值(索引对)并构建所需的数据格式。但是,我无法应付.
任何帮助都很感激。
谢谢
发布于 2018-11-05 09:14:48
您可以将idxmax
与reset_index
结合使用,并通过iloc
按职位进行选择。
df = df.iloc[df.reset_index().groupby('ts')['ts2'].idxmax()]
print (df)
val
ts ts2
2018-05-24 23:00:00 2018-05-24 00:45:00 7
或者将boolean indexing
与Index.duplicated
一起使用,但首先使用sort_index
df = df.sort_index()
df = df[~df.index.get_level_values(0).duplicated(keep='last')]
print (df)
val
ts ts2
2018-05-24 23:00:00 2018-05-24 00:45:00 7
https://stackoverflow.com/questions/53151295
复制相似问题