我想创建一个数据透视表并使用多个aggfuncs
;具体为np.mean
和np.std
。 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
我希望输出看起来像这样:
Col 3 Col 4 Col 5 Col 6 Col 7 ...
Col 1 Col 2 Mean Std Mean Std Mean Std Mean Std Mean Std ...
A A 0 0 2123.5 2173.5 ...
B ...
C ...
我现在不打算完成所有的计算,但我认为这可以解决这个问题。
答案 0 :(得分:1)
我不得不改变你的行标题来自" Col 1" >> " Col1中"
compile 'com.google.android.gms:play-services-ads:8.4.0' and
答案 1 :(得分:0)
我认为这可以使用.describe()(包含均值和标准统计数据)和.pivot的组合来解决。假设您的DF看起来像这样:
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
并且您希望获得关于' lon'的统计信息。每个国家/地区的列。使用.describe获取统计信息:
stats = df.groupby('Country').describe()
#reset index so that you can specify the columns later
stats.reset_index(level = [0,1], inplace = True)
stats.head()
Country level_1 lon
0 Albania count 1.0000
1 Albania mean 19.8318
2 Albania std NaN
3 Albania min 19.8318
4 Albania 25% 19.8318
然后根据您的统计数据表执行数据透视表。由于结果将是多索引的,因此您需要指定元组列来访问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
如果这有帮助,请告诉我 - 祝你好运。