折叠DataFrame中具有重复索引值的条目

时间:2015-09-15 13:18:58

标签: python pandas

import pandas as pd
bids = [100, 101, 101, 102]
offers = [101, 102, 102.25, 103]
data = {'bids': bids, 'offers': offers}
index = [0, 1, 1, 2]
df = pd.DataFrame(data=data, index=index)
print df

   bids  offers
0   100  101.00
1   101  102.00
1   101  102.25
2   102  103.00

如何重新索引df,以便使用每列中给定索引的最新值?在这个例子中,我希望索引1有[101,102.25]

2 个答案:

答案 0 :(得分:2)

您可以拨打reset_index然后drop_duplicates并传递参数take_last=True,然后重新设置索引

In [181]:
df.reset_index().drop_duplicates('index',take_last=True).set_index('index')

Out[181]:
       bids  offers
index              
0       100  101.00
1       101  102.25
2       102  103.00

更优雅的方法是在索引上groupby并致电last

In [183]:    
df.groupby(df.index).last()

Out[183]:
   bids  offers
0   100  101.00
1   101  102.25
2   102  103.00

答案 1 :(得分:1)

根据你所描述的,我猜测你想要结果中的“最后一行”。在这种情况下,您只需使用for peak in peaks: if peak[2] <= -100000: text(peak[0], 1.02*peak[1], '%d'%int(peak[2]))

.tail

来自文档:

  

DataFrame.tail(N = 5)¶

     

返回最后n行