使用pandas对包含inf和NaN的数据框进行排序。

7

我有一个Pandas DataFrame,我想按照一个列的降序排序。

Name   count
AAAA    -1.1
BBBB     0
CCCC    -10
DDDD     inf
EEEE     3
FFFF     NaN
GGGG     30

我希望能将计数按降序排列并将 infNaN 行移到末尾。df.sort('count',ascending = False,na_position="last") 可以将 NaN 移到末尾,但是如何处理 inf 呢?

2个回答

8
你可以把无穷大的值看作为空值:
with pd.option_context('mode.use_inf_as_null', True):
    df = df.sort_values('count', ascending=False, na_position='last')


df
Out: 
   Name      count
6  GGGG  30.000000
4  EEEE   3.000000
1  BBBB   0.000000
0  AAAA  -1.100000
2  CCCC -10.000000
3  DDDD        inf
5  FFFF        NaN 

2

可能的解决方案之一:

In [33]: df.assign(x=df['count'].replace(np.inf, np.nan)) \
           .sort_values('x', ascending=False) \
           .drop('x', 1)
Out[33]:
   Name      count
6  GGGG  30.000000
4  EEEE   3.000000
1  BBBB   0.000000
0  AAAA  -1.100000
2  CCCC -10.000000
3  DDDD        inf
5  FFFF        NaN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接