相关疑难解决方法(0)

pandas:按二级索引的范围切片MultiIndex

我有一个像这样的MultiIndex系列:

import numpy as np
import pandas as pd

buckets = np.repeat(['a','b','c'], [3,5,1])
sequence = [0,1,5,0,1,2,4,50,0]

s = pd.Series(
    np.random.randn(len(sequence)), 
    index=pd.MultiIndex.from_tuples(zip(buckets, sequence))
)

# In [6]: s
# Out[6]: 
# a  0    -1.106047
#    1     1.665214
#    5     0.279190
# b  0     0.326364
#    1     0.900439
#    2    -0.653940
#    4     0.082270
#    50   -0.255482
# c  0    -0.091730
Run Code Online (Sandbox Code Playgroud)

我想得到s ['b']值,其中第二个索引(' sequence')在2到10之间.

在第一个索引上切片工作正常:

s['a':'b']
# Out[109]: 
# bucket  value
# a       0        1.828176
#         1        0.160496
#         5        0.401985 …
Run Code Online (Sandbox Code Playgroud)

python pandas

24
推荐指数
3
解决办法
3万
查看次数

Pandas报告了top-n in group and pivot

我试图通过对单个维度d1进行分组并报告d1的每个元素的汇总统计信息来汇总数据帧.特别是我对许多指标的前n个(索引和值)感兴趣.我想要产生的是d1的每个元素的一行.

假设我有两个维度d1,d2和4个度量m1,m2,m3,m4

1)对于每个度量m1-m4,建议的d1分组方法是什么,并找到最高n d2和度量值.

在Wes的书中,他建议使用Python for Data Analysis(第35页)

def get_top1000(group):
 return group.sort_index(by='births', ascending=False)[:1000]
grouped = names.groupby(['year', 'sex'])
top1000 = grouped.apply(get_top1000)
Run Code Online (Sandbox Code Playgroud)

这仍然是推荐的方式(我只对1000s中的前5 d2以及多个指标感兴趣)2)现在接下来的问题是我想要转动前5位(即所以每个元素都有一行) d1)

因此,对于尺寸d1,d2和公制m1,结果数据框应如下所示:索引d1和d2的前5个值的列以及m1的对应值

d1 d2-1 d2-2 d2-3 d2-4 d2-5 m1-1 m1-2 m1-3 m1-4 m1-5

....

所以要转向我必须沿着d2创建排名(即1到5 - 这是我的列字段).如果我总是有5个条目,这很容易,但是对于给定的d1值,偶尔会有少于5个d2的元素.

所以有人可能会建议如何为分组添加排名,以便我有正确的列索引来执行透视

python pivot-table top-n pandas

4
推荐指数
1
解决办法
3169
查看次数

标签 统计

pandas ×2

python ×2

pivot-table ×1

top-n ×1