#python #pandas #nan
#питон #панды #nan
Вопрос:
У меня есть два кадра данных с NAN, которые я не могу заполнить наиболее распространенными методами, я пробую их все сразу. Мой код таков:
df_list=[df1,df2] for df in df_list: df.fillna("NULL", inplace=True) df.replace({"":"NULL"}, inplace=True) df.replace({np.nan:"NULL"},inplace=True) df.replace({pd.NA:"NULL"},inplace=True)
df.replace({"":"NULL"}, inplace=True)
это связано с тем, что некоторые пустые ячейки были действительно пустыми строками ( «» ), а не правильными nan.
Я знаю, что код не работает, потому что, когда я это делаю
df1["A"].isnull().sum()
результат не равен нулю.
Что я делаю не так?
Комментарии:
1. @havingaball на месте=True означает, что он сохранен
2. можете ли вы попробовать
df1.loc[df1['a'].isnull()]
и посмотреть, какие из них не заполнены?
Ответ №1:
Позволяет вашим df1 и df2 выглядеть следующим образом:
df1 = pd.DataFrame([[1,1,1],[1,1,np.nan]]) df2 = pd.DataFrame([[np.nan,2,2],[2,2,2]]) df_list=[df1,df2] for df in df_list: df.fillna('NULL', inplace=True) # Lets display if there is any null? print(df1.isnull().sum())
И результат таков:
0 0 1 0 2 0 dtype: int64
И если в ваших dfs есть «пустые» ячейки вместо nan,
df1 = pd.DataFrame([[1,1,1],[1,1,np.nan]]) df2 = pd.DataFrame([[np.nan,2,2],[2,2,2]]) df_list=[df1,df2] for df in df_list: df.replace({'':'NULL'}, inplace=True) print(df1.isnull().sum())
В результате получается:
0 0 1 0 2 0 dtype: int64
Результаты в обоих случаях-это все нули. Если это все еще не решает вашу проблему, вам следует указать свой dfs в вопросе.