替换 DataFrame 索引中的 NaN

Boo*_*d16 4 label replace nan dataframe pandas

我有一个如下所示的 DataFrame:

      one | two 
a   |  2  |  5
b   |  3  |  6
NaN |  0  |  0
Run Code Online (Sandbox Code Playgroud)

如何用字符串替换索引中的 NaN,比如“无标签”?

我试过:

df = df.replace(np.NaN, "No label") 
Run Code Online (Sandbox Code Playgroud)

df.index = df.index.replace(np.NaN, "No label") 
Run Code Online (Sandbox Code Playgroud)

但是得到了

TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)

YS-*_*S-L 7

您可以先将原始索引作为系列处理,然后重新分配索引:

import pandas as pd
import numpy as np
df = pd.DataFrame({'one': [2, 3, 0], 'two': [5, 6, 0]}, index=['a', 'b', np.nan])
df.index = pd.Series(df.index).replace(np.nan, 'No label')
print df
Run Code Online (Sandbox Code Playgroud)

输出:

          one  two
a           2    5
b           3    6
No label    0    0
Run Code Online (Sandbox Code Playgroud)

  • 有一个“to_series”方法可以将“Index”转换为“Series”:“df.index = df.index.to_series().fillna('No label')”可以正常工作 (2认同)

jez*_*ael 6

使用Index.fillna

df.index = df.index.fillna('No label')
print (df)
          one  two
a           2    5
b           3    6
No label    0    0
Run Code Online (Sandbox Code Playgroud)