gpt4 book ai didi

python - 如何创建根据组大小排序的多索引数据框?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:28 25 4
gpt4 key购买 nike

我确实有这样一个数据框:

df = pd.DataFrame({
'IDs': list('abcdefgh'),
'Val': [
'foo', 'bar', 'foo', 'abc', 'bar', 'bar', 'foo', 'foo'
]
})

IDs Val
0 a foo
1 b bar
2 c foo
3 d abc
4 e bar
5 f bar
6 g foo
7 h foo

我现在想要得到这样的输出:

Val IDs           
foo a
c
g
h
bar b
e
f
abc d

因此,它是根据 Val 中每个组的 size 排序的多索引数据帧的索引。

我目前是这样做的:

df['groupsize'] = df.groupby('Val')['IDs'].transform('size')

df = (
df.sort_values(['groupsize', 'Val', 'IDs'], ascending=[False, True, True])
.drop('groupsize', axis=1)
.set_index(['Val', 'IDs'])
)

df.to_excel('example.xlsx', merge_cells=True)

它给出了所需的输出。

有没有一种方法可以实现相同的输出,但不创建这个中间列 groupsize,它稍后会被删除?

最佳答案

使用set_indexvalue_counts

df.set_index('Val').loc[df.Val.value_counts().index]

Out[44]:
IDs
Val
foo a
foo c
foo g
foo h
bar b
bar e
bar f
abc d

如果您需要多索引,只需将 set_indexappend=True 相加即可

df.set_index('Val').loc[df.Val.value_counts().index].set_index('IDs', append=True)

关于python - 如何创建根据组大小排序的多索引数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58783908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com