2015-10-20 49 views
1

有没有办法来组数据框的行不被一些列的值,而是通过应用一些功能到该列的值的结果呢?例如,根据某一列的值是否为> 0或≤将这些数据行的行分组。0如何组数据帧通过一些变换列

当然,我意识到可以始终创建一个辅助列来保存转换的结果,并使用此辅助列作为参数groupby。我的问题在于是否有办法做同样的事情,而不需要创建一个辅助列。

回答

3

你给的例子是非常简单的:

import numpy 
import pandas 

numpy.random.seed(0) 
N = 15 
df = pandas.DataFrame({ 
    'A': numpy.arange(N), 
    'B': numpy.round(numpy.random.normal(size=N), 2) 
}) 

print(df.to_string()) 


    A  B 
0 0 1.76 
1 1 0.40 
2 2 0.98 
3 3 2.24 
4 4 1.87 
5 5 -0.98 
6 6 0.95 
7 7 -0.15 
8 8 -0.10 
9 9 0.41 
10 10 0.14 
11 11 1.45 
12 12 0.76 
13 13 0.12 
14 14 0.44 

于是我可以按列A的比较10组:

df.groupby(by=df['A'] < 10).sum() 

     A  B 
A    
False 60 2.91 
True 45 7.38 

by语句可以是更复杂的(即返回任意数量的值):

classifier = {0: 'old', 1: 'busted', 2: 'hotness'} 
df.groupby(by=(df['A'] % 3).map(classifier)).sum() 

      A  B 
A   
old  30 6.12 
busted 35 2.38 
hotness 40 1.79