Python Pandas - 如何获得前n个值和所有其他值的总和

时间:2016-12-26 09:27:55

标签: python pandas

我有一个像这样的Pandas DataFrame:

Browsers        Sessions
Chrome          201
IE              136
Safari          101
Firefox         36
SamsungBrowse   12
Opera           6  

我需要的是显示前三个值并将其余值相加为“其他”:

Browsers        Sessions
Chrome          201
IE              136
Safari          101
Other           54  

有什么想法可以做到这一点?

2 个答案:

答案 0 :(得分:5)

试试这个:

In [39]: result = df.nlargest(3, columns='Sessions')

In [40]: result.loc[len(result)] = ['Others', df.loc[~df.Browsers.isin(result.Browsers), 'Sessions'].sum()]

In [41]: result
Out[41]:
  Browsers  Sessions
0   Chrome       201
1       IE       136
2   Safari       101
3   Others        54

答案 1 :(得分:4)

可以有更好的方法来做到这一点。但有一种方法可以是这样的:

df2 = df.sort_values('Sessions', ascending=False)[:3]
s = df.sort_values('Sessions', ascending=False).Sessions[3:].sum()
df3.loc[len(df2)]=['Others', s]
print df3

输出:

  Browsers  Sessions
0   Chrome       201
1       IE       136
2   Safari       101
3   Others        54