我在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,让我们使用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,而不是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/

10-11 03:53