Изменить настройки заполнения по умолчанию для панд - PullRequest
0 голосов
/ 03 октября 2019

Я бы хотел изменить поведение по умолчанию pandas, чтобы заполнять пустые элементы чем-то другим, чем float('nan'), без изменения исходного кода. Я могу легко заменить NaN после Я создал DataFrame, используя DataFrame.fillna(), но вместо этого хотел бы изменить это поведение для всех DataFrames, прежде чем они будут даже созданы.

В моем приложении я использую библиотеку, которая по какой-то причине вылетает, если в Python появляется float('nan'), поэтому моя идея состоит в том, чтобы изменить заливку по умолчанию pandas, чтобы float('nan') никогда не появлялся. Есть ли способ изменить поведение по умолчанию?

РЕДАКТИРОВАТЬ:

Я пытался pd.set_option('mode.use_inf_as_na', True) безрезультатно

https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html

https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html

1 Ответ

0 голосов
/ 04 октября 2019

Отсутствующие данные в pandas представлены NaN . Приведенная выше опция pd.set_option('mode.use_inf_as_na', True) просто указывает pandas распознавать inf как NaN в расчетах.

Например, после настройки isna теперь будет включать inf:

In [7]: pd.DataFrame([np.inf, 2, 3, np.inf]).isna()                                                                               
Out[7]: 
       0
0  False
1  False
2  False
3  False

In [8]: pd.set_option('mode.use_inf_as_na', True)                                                                                 

In [9]: pd.DataFrame([np.inf, 2, 3, np.inf]).isna()                                                                               
Out[9]: 
       0
0   True
1  False
2  False
3   True

В настоящее время pandas не имеет вышеуказанных функций, извините, на самом деле это не решение вашей проблемы. проблема.

Как сказано в комментарии выше, вам лучше заменить значения NaN до инициализации pd.DataFrame().

Например, установить None в ноль.

list_from_source_code = [None, 2, 3, 4, None, 6, 7]
clean_list_from_source_code = [0 if i is None else i for i in list_from_source_code]

In [4]: pd.DataFrame(clean_list_from_source_code).head(3)                                                                         
Out[4]: 
   0
0  0
1  2
2  3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...