【问题标题】:Multi-indexed pandas dataframe subset assignment多索引 pandas 数据帧子集分配
【发布时间】:2013-12-03 23:22:23
【问题描述】:

这里的第一个问题是 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'

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

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

    这适用于 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]
    

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

    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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2018-05-24
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      相关资源
      最近更新 更多