2017-06-05 108 views
1

我有一個大熊貓數據框dfa包含約10103行約10列。 現在我將建立一個新的數據幀DFB,利用DFA,其中,在DFB每一行應計算考慮到第一300 rowsin DFA,例如:熊貓集成數據python

value1= dfa['one'].std() 
value2=dfa['one'].max() 

獲得DFB具有40(300分之12103)項。 基本上,dfb的第一行有兩列(例如,value1,value2)包含如上計算的值,第二行包含從第301行到第600行計算的值。

感謝

回答

2

IIUC,讓我們嘗試用這個和groupbystack

dfa.groupby(dfa.index // 300).apply(lambda x: pd.Series({'max':x.stack().max(),'std':x.stack().std()})) 

MVCE:

dfa = pd.DataFrame(np.random.randint(1,100,(10,10)), columns=list('ABCDEFGHIJ')) 
print(dfa) 

輸出:

A B C D E F G H I J 
0 81 15 57 42 90 25 72 98 6 8 
1 44 63 39 29 11 3 80 15 43 47 
2 68 97 42 93 19 73 28 25 2 83 
3 38 52 65 61 79 82 98 60 76 93 
4 68 39 62 48 44 19 44 47 54 26 
5 52 93 14 37 48 81 6 20 91 30 
6 39 15 22 48 22 8 35 60 72 43 
7 13 26 24 74 41 36 92 93 13 85 
8 2 46 35 21 92 15 66 19 87 66 
9 77 13 15 69 3 81 75 30 64 63 

創建以米DFB例如,每行2行,而不是300行。

dfb = dfa.groupby(dfa.index // 2).apply(lambda x: pd.Series({'max':x.stack().max(),'std':x.stack().std()})) 
print(dfb) 

輸出:

max  std 
0 98.0 29.754080 
1 98.0 28.086521 
2 93.0 24.203686 
3 93.0 27.390884 
4 92.0 30.153072