Pandas支点台布置工

2024-04-16 20:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个pivot表并使用多个aggfuncs;特别是np.mean和{}。pandas.pivot_tables的正常行为是将aggfuncs按层次结构放在顶层。如果您在value中只有一个列,这没关系,但我有7个。这使得阅读表格有点乏味。我希望能够将值放在层次结构的顶部,以便在每个value中有一个mean和std列。有没有办法做到这一点,或者我是索尔?在

谢谢你的帮助!在

编辑:这里是数据的一小部分摘录。在

Col1   Col2    Col3    Col4     Col5     Col6   Col7    Col8   Col9    
A       A        0      4247     5684     2068   393    237    16286
A       A        0        0      2366     4159   3155   696    341     
A       B        18198    0        1114   1871   5392   1954   755  
A       B        17829    0      2695     2366   3768   1289   445
A       C        18352    0      3545     7508   5099   2071   1239 

我希望输出如下所示:

^{pr2}$

我现在不打算通读所有的计算,但我认为这是一个格式问题,这一点得到了理解。在


Tags: 数据编辑pandastables层次结构valuenpmean
2条回答

我不得不将您的行标题从“Col 1”>改为“>Col1”

import pandas as pd

df=pd.read_clipboard()

df

Col1   Col2    Col3    Col4     Col5     Col6   Col7    Col8   Col9    
A       A        0      4247     5684     2068   393    237    16286
A       A        0        0      2366     4159   3155   696    341     
A       B        18198    0        1114   1871   5392   1954   755  
A       B        17829    0      2695     2366   3768   1289   445
A       C        18352    0      3545     7508   5099   2071   1239 




  In [9]: import numpy as np

In [10]: np.round(df.groupby(['Col1', 'Col2']).agg(['mean', 'std']),4)
Out[10]:
              Col3              Col4               Col5               Col6  \
              mean       std    mean        std    mean        std    mean
Col1 Col2
A    A         0.0    0.0000  2123.5  3003.0825  4025.0  2346.1803  3113.5
     B     18013.5  260.9224     0.0     0.0000  1904.5  1117.9358  2118.5
     C     18352.0       NaN     0.0        NaN  3545.0        NaN  7508.0

                      Col7               Col8             Col9
                 std  mean        std    mean      std    mean         std
Col1 Col2
A    A     1478.5603  1774  1953.0289   466.5  324.562  8313.5  11274.8176
     B      350.0179  4580  1148.3414  1621.5  470.226   600.0    219.2031
     C           NaN  5099        NaN  2071.0      NaN  1239.0         NaN

我认为可以使用.describe()和.pivot的组合来解决这个问题。假设你有一个如下所示的测向:

print(df)

        City          Country                   lon
0       Dubai         United Arab Emirates   55.307484
254     Buenos Aires  Argentina             -58.381592
1002    Rosario       Argentina             -60.666500
1162    Punta Arenas  Chile                 -70.916473
1178    San Miguel    Argentina             -65.217590

你想得到每个国家的统计数据。使用。请描述以获取统计信息:

^{pr2}$

然后根据统计表创建一个透视表。由于结果将是多索引的,因此需要指定元组列来访问mean和std列:

stats.pivot('Country', 'level_1')[[('lon', 'mean'), ('lon', 'std')]]

结果是:

    lon
level_1 mean    std
Country     
Albania 19.831800   NaN
Algeria 2.744837    3.323134
Angola  13.234444   NaN
Argentina   -63.806806  4.101027

告诉我这是否有助于好运。在

相关问题 更多 >