我在Pandas中有一个Dataframe dfa,其中包含约12103行和约10列。
现在,我将利用dfa构建一个新的Dataframe dfb,其中应考虑dfa中的前300行来计算dfb中的每一行,例如:
value1= dfa['one'].std()
value2=dfa['one'].max()
获得具有40(12103/300)个条目的dfb。
基本上,dfb的第一行包含两列(例如,value1,value2),其中包含按上述方法计算的值,第二行包含从dfa的第301行到第600行的计算值。
谢谢
最佳答案
IIUC,让我们使用groupby
和stack
尝试一下:
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,而不是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
关于python - 在Pandas Python中聚合数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44368693/