2015-07-20 118 views
1
import pandas as pd 
from numpy.random import randn 

oldn = pd.DataFrame(randn(10, 4), columns=['A', 'B', 'C', 'D']) 

我想使一个新的数据帧是0..9行长,并且具有一列“平均”,其用于行N =平均(旧[N]的值[” A'],old [N] ['B'] .. old [N] ['D'])有效地通过数据帧大熊猫索引行走

我对熊猫不是很熟悉,所以我所有的想法如何做到这一点,循环和事物。什么是创建和填充新表的有效方法?您DF

回答

1

呼叫mean并通过PARAM axis=1计算平均值按行,你就可以通过这个数据到DataFrame构造函数:

In [128]: 

new_df = pd.DataFrame(data = oldn.mean(axis=1), columns=['avg']) 
new_df 
Out[128]: 
     avg 
0 0.541550 
1 0.525518 
2 -0.492634 
3 0.163784 
4 0.
5 0.514676 
6 -0.468888 
7 0.334473 
8 0.669139 
9 0.736748 
+0

感谢答案。我最终使用了这种变体,并将其与几列描述性统计数据传递给了一个字典。 setupDict = {'mean':oiDM.mean(axis = 1),'upper':(oiDM.std(axis = 1)+ oiDM.mean(axis = 1)),'lower':(-oiDM.std( axis = 1)+ oiDM.mean(axis = 1))} chartDM = pd.DataFrame(data = setupDict) – user3556757

0

如果你想平均为特定列使用以下。否则,您可以使用@EdChum

提供
oldn['Avg'] = oldn.apply(lambda v: ((v['A']+v['B']+v['C']+v['D'])/4.), axis=1) 

old['Avg'] = oldn.apply(lambda v: ((v[['A','B','C','D']]).sum()/4.), axis=1) 
print oldn 
     A   B   C   D  Avg 
0 -0.201468 -0.832845 0.100299 0.044853 -0.222290 
1 1.510688 -0.955329 0.239836 0.767431 0.390657 
2 0.780910 0.335267 0.423232 -0.678401 0.215252 
3 0.780518 2.876386 -0.797032 -0.523407 0.584116 
4 0.438313 -1.952162 0.909568 -0.465147 -0.267357 
5 0.145152 -0.836300 0.352706 -0.794815 -0.283314 
6 -0.375432 -1.354249 0.920052 -1.002142 -0.452943 
7 0.663149 -0.064227 0.321164 0.779981 0.425017 
8 -1.279022 -2.206743 0.534943 0.794929 -0.538973 
9 -0.339976 0.636516 -0.530445 -0.832413 -0.266579