我有一个像这样的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
有什么想法可以做到这一点?
答案 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