1
有没有办法来组数据框的行不被一些列的值,而是通过应用一些功能到该列的值的结果呢?例如,根据某一列的值是否为> 0或≤将这些数据行的行分组。0如何组数据帧通过一些变换列
当然,我意识到可以始终创建一个辅助列来保存转换的结果,并使用此辅助列作为参数groupby
。我的问题在于是否有办法做同样的事情,而不需要创建一个辅助列。
有没有办法来组数据框的行不被一些列的值,而是通过应用一些功能到该列的值的结果呢?例如,根据某一列的值是否为> 0或≤将这些数据行的行分组。0如何组数据帧通过一些变换列
当然,我意识到可以始终创建一个辅助列来保存转换的结果,并使用此辅助列作为参数groupby
。我的问题在于是否有办法做同样的事情,而不需要创建一个辅助列。
你给的例子是非常简单的:
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