【问题标题】:Reindexing a series returns NaNs in Pandas重新索引系列返回 Pandas 中的 NaN
【发布时间】:2018-11-23 03:02:10
【问题描述】:

以下代码返回一个到处都是 NaN 的系列:

s = pd.Series([1, 2, 3, 4, 5, 6],
                 index=pd.MultiIndex.from_product([["A", "B"], ["c", "d", "e"]]))

s.reindex([('E', 'g'), ('E', 'h'), ('E', 'i'), ('F', 'g'), ('F', 'h'), ('F', 'i')])

s.reindex(pd.MultiIndex.from_product([['E', 'F'], ['g', 'h', 'i']]))

如何重新索引系列并保留原始值?

【问题讨论】:

    标签: python-3.x pandas series multi-index reindex


    【解决方案1】:

    这不是reindex,就是改成index

    s.index=pd.MultiIndex.from_product([['E', 'F'], ['g', 'h', 'i']])
    s
    Out[362]: 
    E  g    1
       h    2
       i    3
    F  g    4
       h    5
       i    6
    dtype: int64
    

    【讨论】:

    • 是的,“reindex”的意思是“查找这些值”,而不是“替换索引”。
    【解决方案2】:

    如果需要将新值设置为二级使用MultiIndex.set_levels:

    s.index = s.index.set_levels(['g', 'h', 'i'], level=1)
    print (s)
    A  g    1
       h    2
       i    3
    B  g    4
       h    5
       i    6
    dtype: int64
    

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 2018-10-28
      • 2020-05-19
      • 2018-02-09
      • 2013-07-17
      • 2022-01-09
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多