python - 分配给 MultiIndex 切片

标签 python pandas

In [332]: midx = MultiIndex(levels=[['zero', 'one'], ['x','y']],
   .....:                   labels=[[1,1,0,0],[1,0,1,0]])
   .....: 

In [333]: df = DataFrame(randn(4,2), index=midx)

In [334]: print(df)
               0         1
one  y  0.313092 -0.588491
     x  0.203166  1.632996
zero y -0.557549  0.126204
     x  1.643615 -0.067716

我想将第 0 列中的元素设置为 nan,其中 level 1 == y。 使用 .xs() 我会这样做:df.xs('y', level=1)[0] = np.nan 这显然是行不通的。类似 df.ix[(:, 'y'), 0] = np.nan 的内容当然也是无效的。

最佳答案

<= 0.13.1

In [51]: df = DataFrame(randn(4,2), index=midx)

In [52]: df.loc[df.index.get_loc_level('y',level=1)[0],0] = np.nan

In [53]: df
Out[53]: 
               0         1
one  y       NaN -0.260289
     x  0.122913  0.728180
zero y       NaN -0.010145
     x -0.532615  0.758914

[4 rows x 2 columns]

在 0.14 中,您能够使用新的语法,参见:https://github.com/pydata/pandas/pull/6134

类似于:

df.loc[(slice(None),'y'),0] = np.nan

应该可以。

关于python - 分配给 MultiIndex 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539260/

相关文章:

Python:计算数据框列中所有行中特定字符的实例

python - Keyerror 多索引数据框 pandas

python - 从 SciPy 稀疏矩阵填充 Pandas SparseDataFrame

Python:通过公钥 "not a valid RSA"进行 Paramiko 身份验证

python - 如何使用 RegEx 加速 Apache 日志的解析以扩展 Pandas 数据框?

python - 使用 pandas 进行滚动统计模型协整

python - 如何使用 python 列表有效地重命名数据帧索引?

python - open(file, "wt"或 "rt") 是不同的对象吗?

python - 使用分层列连接两个 DataFrame

python - fbchat Python库灌输错误