【发布时间】:2014-08-13 10:41:00
【问题描述】:
基本设置:
我在行和列上都有一个DataFrame 和一个MultiIndex。列索引的第二级有 floats 的值。
我想执行groupby 操作(按行索引的第一级分组)。该操作将向每个组添加几列(也以floats 作为标签),然后返回该组。
当我从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:
然后定义我的组操作并应用它:
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)
显示result 给出:
这里发生了什么?为什么第 2 级的列索引不按升序显示?
编辑: 就上下文而言:
pd.__version__
Out[28]:
'0.14.0'
In [29]:
np.__version__
Out[29]:
'1.8.1'
非常感谢任何帮助。
【问题讨论】:
-
你能发布你的 pandas/numpy 版本吗?可能是浮点索引排序的问题
-
张贴在上面,谢谢杰夫