假设我们有一个这样的数据框:
df = pd.DataFrame({'Bins':[(0,10),(11,20), (0,10), (21,30)],
'Age':[14,17,18, 15]})
Bins Age
0 (0, 10) 14
1 (11, 20) 17
2 (0, 10) 18
3 (21, 30) 15
现在,我们要对Bins
上的此数据帧进行分组,并且还要加电Age
值并将结果放入新列中。这是我用于此目的的代码:
df['New'] = df.groupby('Bins')['Age'].apply(lambda i:np.power(i,2))
但是结果不是我期望看到的。由于它没有将结果分为3个不同的箱:
Bins Age New
0 (0, 10) 14 196
1 (11, 20) 17 289
2 (0, 10) 18 324
3 (21, 30) 15 225
答案 0 :(得分:1)
如果我正确理解需求,则在分组时,如果一个仓有多个值,则必须定义要执行的操作。我认为您的意思是:
示例:
In [17]: df.groupby('Bins')['Age'].sum().apply(lambda i:i**2)
Out[17]:
Bins
(0, 10) 1024
(11, 20) 289
(21, 30) 225
Name: Age, dtype: int64
sum()
为您提供:
In [18]: df.groupby('Bins')['Age'].sum()
Out[18]:
Bins
(0, 10) 32
(11, 20) 17
(21, 30) 15
Name: Age, dtype: int64
现在将幂加到求和结果上。
如果您认为更合理,则可以用mean()
替换