Why nan values are shown after reindexing?

Viewed 99

I am trying to reindex the columns, but it's displaying nan values. I am not able to understand why?

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)

Output:

   age qualified
A  NaN       NaN
B  NaN       NaN
C  NaN       NaN
D  NaN       NaN
1 Answers

I think you need DataFrame.set_index, with nested list if need replace index values by new values:

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

Method DataFrame.reindex working different - it create new index by list with alignment data - it means first match existing values of index by values of new list new and for not matching values create 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
Related