2016-04-04 35 views
4

Bu kodukaydet dataframe pandas ama NA tasarrufu

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}); 

var değerleri Ve NA değerlerle ağırlığını değiştirdi:

df['weight'] = np.nan 

Ve nihayet Ben kurtardım

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

Ama NA yerine "" adlı dosyayı okurken, NA yerine NA

'ü koymak istiyorum

Ben çıktı olarak istiyorum:

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

geçişli param 'na_rep' böylece de df.to_csv ("ejemplo.csv", sep = "", ondalık = "" alıntı = csv.QUOTE_NONNUMERIC, indis = yanlış, na_rep = 'NA') – EdChum

+0

evet ama tırnakları olmadan –

+0

tırnaklarını istemiyorum – EdChum

cevap

3

belirli çıkışını elde etmek için, açıkça içinde tırnak geçmesi gerekecek.

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

Bu çıktıyı istiyorum: yetişkin; hayvan; boyut; kilo Yanlış; "köpek" "S"; NA Yanlış; "kedi"; "M"; NA –

+0

Yukarıdaki kod size bu çıkışı verir. – crashMOGWAI

3

Eğer NaN değerlerini temsil etmek üzere bir dize sonra geçmesi istiyorsanız na_repto_csv için:

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' 

sonra tırnak kaçmak tırnak içinde NA isterseniz:

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" 

DÜZENLEME

İstenen çıkış bu params kullanmak almak için:

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

benim güncellenmiş cevabımı görüyorum Ama tırnakları ile tırnakları istiyorum (NA değil) –

+0

Diğer mesajda tırnaksız NA isteyin ???? –

+0

Bu çıktının alınmasını istiyorum: yetişkin; hayvan; boyut; Yanlış; "köpek"; "S"; NA Yanlış; "kedi"; "M"; NA –