数据帧分组和排序

时间:2017-12-22 04:01:04

标签: python pandas

我是pandas的新手,有一个数据框,df

(pybert) Davids-Air-2:PyBERT dbanas$ ls -A ~/tmp/site-packages/pybert/doc/_build/html/
genindex.html           intro.html              objects.inv             search.html
index.html              modules.html            py-modindex.html        searchindex.js

我想要一个像这样的数据框

    Index         prt     Mb      
 2017-08-09       tt      0       
 2017-08-09       uu    140       
 2017-08-10       uu    200      
 2017-08-11       tt     0        
 2017-08-11       tt    150      
 2017-08-16       uu    200       

ttt列应该用除以1000的除法结果替换。我怎么能去做呢?

1 个答案:

答案 0 :(得分:2)

我怀疑你在这里需要groupby

df= df.sort_values('Mb',ascending=False)
df['ttt'] = df['Mb'].div(1000)
# Based on the comment. `df['ttt'] = pd.to_numeric(df['Mb'],errors='coerce').div(1000)`

        Index prt   Mb   ttt
2  2017-08-10  uu  200  0.20
5  2017-08-16  uu  200  0.20
4  2017-08-11  tt  150  0.15
1  2017-08-09  uu  140  0.14
0  2017-08-09  tt    0  0.00
3  2017-08-11  tt    0  0.00

要从数据帧中删除tt,简单的布尔索引就足够了,即

df[df['prt'].eq('uu')] 

      Index   prt   Mb   ttt
2  2017-08-10  uu  200  0.20
5  2017-08-16  uu  200  0.20
1  2017-08-09  uu  140  0.14