2017-03-28 9 views
3

Ich habe einen Pandas Datenrahmen, den ich in absteigender Reihenfolge einer Spalte sortieren möchte.Pandas Datenrahmen mit Inf und NaN sortieren

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

ich sortieren mag in absteigender Reihenfolge zählen und inf und NaN Zeilen bis zum Ende bewegen. df.sort('count',ascending = False,na_position="last") schiebt NaN bis zum Ende. Wie geht man mit inf um?

Antwort

2

Eine der möglichen Lösungen:

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 
4

Sie können inf Werte als null behandeln:

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 
Verwandte Themen