我正在尝试在pandas dataframe MultiIndex中用None替换nan。似乎在MultiIndex中将None转换为nan(但在其他索引类型中不会)。
以下代码无效(摘自问题Replace NaN in DataFrame index):
这句话的意思是“也不”。
似乎在MultiIndex中,None被转换为NaN。
注:对于其他索引类型,它是有效的。
以下代码无效(摘自问题Replace NaN in DataFrame index):
df = pd.DataFrame([['a', True, 1], ['b', True, 2], ['c', False, 3], ['d', None, 4]], columns=['c1', 'c2', 'c3'])
df.set_index(['c1','c2'], inplace=True)
df.index = pd.MultiIndex.from_frame(df.index.to_frame().fillna(np.nan).replace([np.nan], [None]))
df
c3
c1 c2
a True 1
b True 2
c False 3
d NaN 4
type(df.index[3][1])
<class 'float'>
这句话的意思是“也不”。
index_tuples = [tuple(row) for row in df.index.to_frame().fillna(np.nan).replace([np.nan], [None]).values]
pd.MultiIndex.from_tuples(index_tuples)
MultiIndex([('a', True),
('b', True),
('c', False),
('d', nan)],
)
type(df.index[3][1])
<class 'float'>
似乎在MultiIndex中,None被转换为NaN。
注:对于其他索引类型,它是有效的。
df = pd.DataFrame([['a', True, 1], ['b', True, 2], ['c', False, 3], ['d', None, 4]], columns=['c1', 'c2', 'c3'])
df.set_index('c2', inplace=True)
>>> df
c1 c3
c2
True a 1
True b 2
False c 3
NaN d 4
>>> df.index = df.index.fillna(value=np.nan).to_series().replace([np.nan], [None])
>>> df
c1 c3
c2
True a 1
True b 2
False c 3
NaN d 4
>>> type(df.index[3])
<class 'NoneType'>
>>>
None
,或者"None"
或其他什么也可以吗? - Marco_CH