我打算在groupby
之后组合Pandas DataFrame的列。我寻找可以使用的选项,但没有一个能够满足我的需求。最接近的选项是.agg()
,它对列的值执行,但是,我想为每个给定的groupbyed行计算所有features
的统计信息。
我正在寻找类似的东西:
dataset.groupby(['company', 'team']).combine(new_cols=['features_mean'], to_combine=['feature 1':'feature 2'], funcs=[np.mean], axis=1)
答案 0 :(得分:1)
将loc
与mean
:
dataset['new measure'] = dataset.loc[:, 'Feature 1':'Feature 12'].mean(axis=1)
<强>示例强>:
dataset = pd.DataFrame({'A':list('abcdef'),
'Feature 1':[4,5,4,5,5,4],
'Feature 2':[7,8,9,4,2,3],
'Feature 3':[1,3,5,7,1,0],
'Feature 4':[5,3,6,9,2,4],
'F':list('aaabbb')})
#print (dataset)
dataset['new measure'] = dataset.loc[:, 'Feature 1':'Feature 4'].mean(axis=1)
print (dataset)
A F Feature 1 Feature 2 Feature 3 Feature 4 new measure
0 a a 4 7 1 5 4.25
1 b a 5 8 3 3 4.75
2 c a 4 9 5 6 6.00
3 d b 5 4 7 9 6.25
4 e b 5 2 1 2 2.50
5 f b 4 3 0 4 2.75
答案 1 :(得分:0)
我意识到我甚至不需要使用groupby
。我可以简单地使用apply
:
dataset['new measure'] = dataset.apply(lambda r: r['Feature 1':'Feature 12'].mean(), axis=1)
但是,由于在implementation中使用for
循环,它运行缓慢。