2016-04-04 5 views
4

У меня есть этот кодСохранить панды dataframe но сохранение NA значения

import pandas as pd 
import numpy as np 
import csv 
df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(), 
       'size': list('SSMMMLL'), 
       'weight': [8, 10, 11, 1, 20, 12, 12], 
       'adult' : [False] * 5 + [True] * 2}); 

И я изменил вес со значениями NA:

df['weight'] = np.nan 

И, наконец, я сохраняла его

df.to_csv("ejemplo.csv", sep=";", decimal=",", quoting=csv.QUOTE_NONNUMERIC, index=False) 

Но когда я прочитал файл, у меня есть "", вместо NA Я хочу поставить NA вместо Nan

Я хочу, чтобы в качестве выходного сигнала:

adult;animal;size;weight 
False;"dog";"S";NA 
False;"cat";"M";NA  
+0

прохода пары '' na_rep' так df.to_csv ("ejemplo.csv", сентябрь = ";", десятичный = "", со ссылкой = csv.QUOTE_NONNUMERIC, индекс = False, na_rep = 'NA') ' – EdChum

+0

да, но я хочу NA без кавычек –

+0

см. Мой обновленный ответ – EdChum

ответ

3

Чтобы получить этот конкретный выход, вам придется пройти котировки в явном виде.

df = pd.DataFrame({'animal': r'"cat" "dog" "cat" "fish" "dog" "cat" "cat"'.split(), 
      'size': list(r'"S" "S" "M" "M" "M" "L" "L"'.split()), 
      'weight': [8, 10, 11, 1, 20, 12, 12], 
      'adult' : [False] * 5 + [True] * 2}); 
df['weight'] = '%s' %('NA') 
df.to_csv("ejemplo.csv", sep=';', decimal=',',quoting=csv.QUOTE_NONE, index=False) 
+0

Я хочу, чтобы этот результат: для взрослых, для животных; размер False; "dog" ; "S"; NA False; "cat"; "M"; NA –

+0

Приведенный выше код дает вам этот вывод – crashMOGWAI

3

Если вы хотите строку для представления NaN значения затем передать na_rep в to_csv:

In [8]: 
df.to_csv(na_rep='NA') 

Out[8]: 
',adult,animal,size,weight\n0,False,cat,S,NA\n1,False,dog,S,NA\n2,False,cat,M,NA\n3,False,fish,M,NA\n4,False,dog,M,NA\n5,True,cat,L,NA\n6,True,cat,L,NA\n' 

Если вы хотите NA в кавычках, то избежать кавычки:

In [3]: 
df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(), 
       'size': list('SSMMMLL'), 
       'weight': [8, 10, 11, 1, 20, 12, 12], 
       'adult' : [False] * 5 + [True] * 2}) 
df['weight'] = np.NaN 
df.to_csv(na_rep='\'NA\'') 

Out[3]: 
",adult,animal,size,weight\n0,False,cat,S,'NA'\n1,False,dog,S,'NA'\n2,False,cat,M,'NA'\n3,False,fish,M,'NA'\n4,False,dog,M,'NA'\n5,True,cat,L,'NA'\n6,True,cat,L,'NA'\n" 

EDIT

Чтобы получить желаемый результат использования этих Params:

In [27]: 
df.to_csv(na_rep='NA', sep=';', index=False,quoting=3) 
​ 
Out[27]: 
'adult;animal;size;weight\nFalse;cat;S;NA\nFalse;dog;S;NA\nFalse;cat;M;NA\nFalse;fish;M;NA\nFalse;dog;M;NA\nTrue;cat;L;NA\nTrue;cat;L;NA\n' 
+0

Но я хочу строки с кавычками (не NA) –

+0

В другом сообщении вы хотите NA без кавычек ???? –

+0

Я хочу этот выход: для взрослых; для животных; размер False; "dog"; "S"; NA False; "cat"; "M"; NA –

Смежные вопросы