为什么重新索引后会显示 nan 值?

我正在尝试重新索引列,但它显示的是 nan 值。我不明白为什么?

data = {
    "age": [50, 40, 30, 40],
    "qualified": [True, False, False, False]
    }
index = ["P", "Q", "R", "S"]
df = pd.DataFrame(data, index=index)

new = ["A", "B", "C", "D"]
newdf = df.reindex(new)
print(newdf)

输出:

   age qualified
A  NaN       NaN
B  NaN       NaN
C  NaN       NaN
D  NaN       NaN

回答

我认为你需要DataFrame.set_index,如果需要用新值替换索引值,请使用嵌套列表:

new = ["A", "B", "C", "D"]
newdf = df.set_index([new])
#alternative
#newdf.index = new
print(newdf)
age  qualified
A   50       True
B   40      False
C   30      False
D   40      False

方法DataFrame.reindex不同 - 它通过带有对齐数据的列表创建新索引 - 这意味着首先通过新列表的值匹配索引的现有值,new对于不匹配的值创建NaNs:

data = {
"age": [50, 40, 30, 40],
"qualified": [True, False, False, False]
}
index = ["A", "Q", "D", "C"]
df = pd.DataFrame(data, index=index)
new = ["A", "B", "C"]
newdf = df.reindex(new)
print(newdf)
age qualified
A  50.0      True
B   NaN       NaN
C  40.0     False

以上是为什么重新索引后会显示 nan 值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>