2015-07-20 110 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