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

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

Я хочу сделать новый DataFrame, который долго 0..9 строк и имеет один столбец «Среды», значение которого для ряда N = среднего (старого [N] [» A '], старый [N] [' B '] .. старый [N] [' D '])эффективно прогуливаясь по индексу dataframe панда

Я не очень хорошо знаком с пандами, поэтому все мои идеи, как это сделать, петель и вещей. Каков эффективный способ создания и заполнения новой таблицы?

ответ

1

Вызов mean на вашем ФР и передать пары axis=1 вычислить среднее ряды, вы можете передать это как данные в DataFrame CTOR:

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

Спасибо. Я закончил тем, что использовал вариацию этого, передав ему dict с несколькими столбцами описательной статистики. setupDict = {'mean': oiDM.mean (axis = 1), 'upper': (oiDM.std (axis = 1) + oiDM.mean (axis = 1)), 'lower': (-oiDM.std (ось = 1) + oiDM.mean (ось = 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 
Смежные вопросы