我建议对熊猫指数本身使用重复的方法:
df3 = df3.loc[~df3.index.duplicated(keep='first')]
尽管所有其他方法都起作用,但是对于所提供的示例,当前接受的答案到目前为止性能最低。此外,尽管groupby方法的性能稍差一些,但我发现重复的方法更具可读性。
使用提供的样本数据:
>>> %timeit df3.reset_index().drop_duplicates(subset='index', keep='first').set_index('index')1000 loops, best of 3: 1.54 ms per loop>>> %timeit df3.groupby(df3.index).first()1000 loops, best of 3: 580 µs per loop>>> %timeit df3[~df3.index.duplicated(keep='first')]1000 loops, best of 3: 307 µs per loop
请注意,您可以通过更改keep参数保留最后一个元素。
还应该注意,该方法也可以MultiIndex使用(使用Paul的示例中指定的df1 ):
>>> %timeit df1.groupby(level=df1.index.names).last()1000 loops, best of 3: 771 µs per loop>>> %timeit df1[~df1.index.duplicated(keep='last')]1000 loops, best of 3: 365 µs per loop
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)