为什么重新索引后会显示 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