Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我喜欢表格_Python_Pandas - Fatal编程技术网

Python 我喜欢表格

Python 我喜欢表格,python,pandas,Python,Pandas,考虑以下数据帧: import pandas as pd import numpy as np df = pd.DataFrame({ 'split_1':[1,2,2,2,1,2,2,2,1,1], 'split_2':[3,3,3,4,4,4,4,3,3,3], 'var_1':[1,2,4,3,2,4,2,2,1,2], 'var_2':[4,2,2,2,1,5,4,3,4,3], }) 我想要实现的是一个类似(或完全相同)的表格,如下所示: 通过使用

考虑以下数据帧:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'split_1':[1,2,2,2,1,2,2,2,1,1],
    'split_2':[3,3,3,4,4,4,4,3,3,3],
    'var_1':[1,2,4,3,2,4,2,2,1,2],
    'var_2':[4,2,2,2,1,5,4,3,4,3],
})
我想要实现的是一个类似(或完全相同)的表格,如下所示:

通过使用groupby和agg方法,我取得了很大的进步

grp = df.groupby(['split_1','split_2'])

tab1 = grp['var_1'].agg([np.mean, np.median, np.max, np.min, np.size])
tab2 = grp['var_2'].agg([np.mean, np.median, np.max, np.min, np.size])

tab = tab1.append(tab2)
这似乎有点骇人听闻。。。我似乎找不到一种方法(或在文档中查找的正确位置)以我想要的方式正确地分组和聚合数据


有合适的方法吗?

这可能是一种稍微清洁的方法:

In [15]: grp = df.groupby(['split_1','split_2'])

In [16]: grp.agg([np.mean, np.median, np.max, np.min, np.size]).stack(0)
Out[16]: 
                           mean  median  amax  amin  size
split_1 split_2                                          
1       3       var_1  1.333333       1     2     1     3
                var_2  3.666667       4     4     3     3
        4       var_1  2.000000       2     2     2     1
                var_2  1.000000       1     1     1     1
2       3       var_1  2.666667       2     4     2     3
                var_2  2.333333       2     3     2     3
        4       var_1  3.000000       3     4     2     3
                var_2  3.666667       4     5     2     3

基本上,不需要将函数集分别应用于两个组并将结果附加在一起。这基本上就是group by正在做的事情:拆分、应用(单独)和合并。

这可能是一个稍微干净的方法:

In [15]: grp = df.groupby(['split_1','split_2'])

In [16]: grp.agg([np.mean, np.median, np.max, np.min, np.size]).stack(0)
Out[16]: 
                           mean  median  amax  amin  size
split_1 split_2                                          
1       3       var_1  1.333333       1     2     1     3
                var_2  3.666667       4     4     3     3
        4       var_1  2.000000       2     2     2     1
                var_2  1.000000       1     1     1     1
2       3       var_1  2.666667       2     4     2     3
                var_2  2.333333       2     3     2     3
        4       var_1  3.000000       3     4     2     3
                var_2  3.666667       4     5     2     3

基本上,不需要将函数集分别应用于两个组并将结果附加在一起。这就是group by正在做的事情:拆分、应用(单独)和合并。

谢谢!另外:通过这种方法,我可以在数据帧上调用
reset\u index()
,获得准确的格式。谢谢!另外:通过这种方法,我能够获得准确的格式,并在数据帧上调用
reset\u index()