重新索引系列返回 Pandas 中的 NaN
Posted
技术标签:
【中文标题】重新索引系列返回 Pandas 中的 NaN【英文标题】:Reindexing a series returns NaNs in Pandas 【发布时间】: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']]))
如何重新索引系列并保留原始值?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于重新索引系列返回 Pandas 中的 NaN的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Pandas 系列中的连续 NaN 值分组到一组切片中?