【问题标题】:Converting a pandas dataframe with a string type, three level MultiIndex into numeric type objects将具有字符串类型、三级 MultiIndex 的 pandas 数据帧转换为数字类型对象
【发布时间】:2016-12-01 22:19:03
【问题描述】:

我有一个带有三级 MultiIndex 的 pandas 数据框,如下所示:

gene            TIMP2      VEGFA       VIM  
2  TGFb 0.1  0.035655   0.876214 -0.158406  
        1    0.087623   1.049764  0.039158  
        10   0.054119   0.887348 -0.052608  
24 TGFb 0.1  0.148470   0.565379  0.157153  
        1    0.233250   0.540806  0.206030  
        10   0.378658   0.861429  0.132580  
48 TGFb 0.1 -0.203006   0.359409 -0.144209  
        1   -0.068495   0.845802 -0.093910  
        10  -0.105295   0.676591 -0.166819  
6  TGFb 0.1  0.060129   1.766071  0.097548  
        1    0.075760   1.656494  0.026664  
        10  -0.029685   1.284003 -0.008032  
   NaN  NaN  2.000000  12.000000  0.000000 

唯一的问题是,由于我构建 MultiIndex 的方式(它嵌入到更大的代码中,因此很难在此处粘贴),索引中的数字是字符串。如何将外部级别转换为整数,将内部级别转换为浮动?这听起来微不足道,但我很难找到解决方案。谢谢

【问题讨论】:

  • 在将 dtype 设置为索引之前,您不能将它们转换为数字吗?这里的问题是多索引可能是按字母顺序而不是按数字排序的,因此即使您现在覆盖它们,当您切片 df 时也会出现意外行为

标签: python pandas multi-index


【解决方案1】:

这应该为你做:

df.index = df.index.set_levels(idx.levels[0].astype(int), level=0) \
                   .set_levels(idx.levels[2].astype(float), level=2)

【讨论】:

  • 这就是我要找的。谢谢(再次=])
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2016-11-14
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多