У меня есть фреймворк pandas со столбцом целых чисел, который содержит некоторые nans. Я хочу преобразовать их из целого числа в строку и заменить nans описанием типа «недоступно».
Основная причина в том, что мне нужно запустить groupbys для этого столбца, и, если я не конвертирую nans, groupby избавится от них! Почему это вообще происходит, и как все сообщество панд не поднялось с оружием в руках, - это совершенно отдельная дискуссия (когда я впервые узнал об этом, я не мог в это поверить ...).
Я пробовал приведенный ниже код, но он не работает. Обратите внимание, что я пробовал и astype(str)
, и astype('str'
). В обоих случаях столбец преобразуется в объект, а не в строку; возможно, потому что Python предполагает (ошибочно, все они имеют одинаковую длину в моем фрейме данных), что длина строк варьируется? Но, что самое главное, функция fillna () не работает, и наны остаются нансами! Почему?
import numpy as np
import pandas as pd
df= pd.DataFrame(np.random.randint(1,10,(10000,5)), columns=['a','b','c','d','e'])
df.iloc[0,0]=np.nan
df['a']=df['a'].astype(str)
df['a']=df['a'].fillna('not available')
print(df.dtypes)
print(df.head())