python - 多索引 Pandas 数据框子集分配

标签 python pandas multi-index

这里的第一个问题是 0.12 中的一个错误,但在 0.13.0rc1 中已修复。 这里的第二个问题虽然没有解决,但至少是不一致的。

这两种情况都可以正常工作:

a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]])
b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B']])
b[['a']]=a[['a']]

a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'b'],[1, 2]])
b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'b'],[1, 2]])
b[['a']]=a[['a']]

但是,

a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]])
b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]])
b[['a']]=a[['a']]

生成一个AttributeError: _ref_locs

类似情况:

b = DataFrame(np.zeros((2, 2)),columns=[['a', 'c'],[1,2]])
b.drop('a', axis=1)

工作正常,但是

b = DataFrame(np.zeros((2, 2)),columns=[['a', 'C'],[1,2]])
b.drop('a', axis=1)

给出 AttributeError: 'FrozenNDArray' 对象没有属性 'start'

最佳答案

由于您没有指定,您可能正在使用 pandas <= 0.12

这在 0.13rc1 中有效(最终版本即将发布),但在 0.12 中是一个错误

上面的示例(为清楚起见使用位置引用)

In [3]: a = DataFrame(np.arange(0,4).reshape((2,2)),columns=[['a', 'B'],[1, 2]])

In [4]: b = DataFrame(np.arange(4,8).reshape((2,2)),columns=[['a', 'B'],[1, 2]])

In [5]: a
Out[5]: 
   a  B
   1  2
0  0  1
1  2  3

[2 rows x 2 columns]

In [6]: b
Out[6]: 
   a  B
   1  2
0  4  5
1  6  7

[2 rows x 2 columns]

In [7]: b[['a']] = a[['a']]

In [8]: b
Out[8]: 
   a  B
   1  2
0  0  5
1  2  7

[2 rows x 2 columns]

第二部分不是错误;相反,您没有完全指定标签(您只指定了一个级别),而是需要指定完整的标签(通过元组):

In [12]: b = DataFrame(np.zeros((2, 2)),columns=[['a', 'C'],[1,2]])

In [13]: b.drop([('a',1)],axis=1)
Out[13]: 
   C
   2
0  0
1  0

[2 rows x 1 columns]

关于python - 多索引 Pandas 数据框子集分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363777/

相关文章:

Python-报告实验室 : Error using custom font

python - 如何使用 Pandas Python 找到相同值的最高计数?

python - 如何使 OptionMenu 保持相同的宽度?

python - 黑白颜色条

python - 使用查询提取日期范围

python - 如果表达式包含 sympy 对象,则 Lambdify 表达式在与数组一起使用时引发 TypeError

python - 使用python访问函数内部的字典

pandas - 如何提取多索引数据帧的索引名称,pandas

python - 多索引 Pandas Dataframe 划分

python - 使用 pandas MultiIndex 连接两个数据帧