gpt4 book ai didi

python - 将函数应用于分组 DataFrame 后,Pandas sort_index 给出奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-03 18:14:12 24 4
gpt4 key购买 nike

基本设置:

我有一个在行和列上都有一个 MultiIndexDataFrame 。列索引的第二级具有 float 值。

我想执行groupby操作(按行索引的第一级分组)。该操作将向每个组添加几列(也以 float 作为标签),然后返回该组。

当我从 groupby 操作返回结果时,我似乎无法正确排序列。

工作示例。首先,进行设置:

import pandas as pd
import numpy as np

np.random.seed(0)

col_level_1 = ['red', 'blue']
col_level_2 = [1., 2., 3., 4.]

row_level_1 = ['a', 'b']
row_level_2 = ['one', 'two']

col_idx = pd.MultiIndex.from_product([col_level_1, col_level_2], names=['color', 'numeral'])
row_idx = pd.MultiIndex.from_product([row_level_1, row_level_2], names=['letter', 'number'])

df = pd.DataFrame(np.random.randn(len(row_idx), len(col_idx)), index=row_idx, columns=col_idx)

df中给出这个DataFrame: enter image description here

然后定义我的组操作并应用它:

def mygrpfun(group):
for f in [1.5, 2.5, 3.5]:
group[('red', f)] = 'hello'
group[('blue', f)] = 'world'
return group

result = df.groupby(level='letter').apply(mygrpfun).sort_index(axis=1)

显示结果给出: enter image description here

这是怎么回事?为什么第二级列索引不按升序显示?

编辑:从上下文来看:

pd.__version__
Out[28]:
'0.14.0'
In [29]:

np.__version__
Out[29]:
'1.8.1'

非常感谢任何帮助。

最佳答案

返回的结果看起来符合预期。您添加了列。无法保证这些列的顺序。

您可以重新排序:

result = result[sorted(result.columns)]

关于python - 将函数应用于分组 DataFrame 后,Pandas sort_index 给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275057/

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