Как отобразить NaN (в колонке с плавающей точкой) в виде пустых ячеек? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть pandas dataframe, который выглядит следующим образом:

<class 'pandas.core.frame.DataFrame'>
dtypes: float64(1)
     VAR_A
0    NaN
1    0.0
2    13.0
3    4.0
4    9.0

Когда я пытаюсь заменить NaN пустым / пробельным символом, либо:

tgt['VAR_A_NEW'] = pd.to_numeric(tgt['VAR_A'].replace(np.nan, '', regex=True), errors='coerce')
tgt['VAR_A_NEW'] = tgt['VAR_A'].fillna('')

print(tgt.info(verbose=True))
print(tgt.head())

Я получаю:

<class 'pandas.core.frame.DataFrame'>
Data columns (total 2 columns):
VAR_A          63 non-null float64
VAR_A_NEW      74 non-null object
dtypes: float64(1), object(1)
   VAR_A    VAR_A_NEW
0  NaN  
1  0.0      0
2  13.0     13
3  4.0      4
4  9.0      9

Очевидно, что атрибут переменной изменился с плавающей на объект.Я понимаю, что концептуально не имеет смысла иметь столбец с плавающей точкой со значением пробела ('').

Есть ли способ отобразить значения NaN плавающей запятой в виде пустых / пустых ячеек, используя

1) print(head()) statement    
2) pd.to_csv statement  

1 Ответ

1 голос
/ 24 сентября 2019

Вы можете использовать метод стиля для замены nan в вашем представлении данных.

https://github.com/pandas-dev/pandas/issues/21527

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
               axis=1)
df.iloc[0, 2] = np.nan

from IPython.core.display import HTML 
HTML(df.style.render().replace('nan',''))

df.to_csv() по умолчанию для хранения nan как ''.Вы можете заменить его, передав аргумент параметру na_rep.df.to_csv(na_rep='missing')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...