2017-01-31 67 views
4

一個數據幀進行非數值列添加引號「」將每個元素我有數據幀如何保存爲CSV

id,type,value 
1,8,value1 
2,2,value2 
3,7,value3 
4,3,value4 
5,10,value5 
6,3,value16 

我想補充的價值id和CSV文件的value要分配報價

"1",8,"value1" 
"2",2,"value2" 

什麼更好的方式來做到這一點

+0

也許向我們展示您嘗試過的以及您的嘗試出了什麼問題? – MooingRawr

+1

您可能想重新考慮選擇@ Boud的答案。該答案適用於旨在編寫csv文件的規範技術。 – piRSquared

回答

11

轉換你的id列作爲一個字符串列。然後使用適當的參數在功能to_csv

import csv 
df.id = df.id.astype(str) 
df.to_csv('test.txt', index=False, quotechar='"', 
         header=None, quoting=csv.QUOTE_NONNUMERIC) 

csv.QUOTE_NONNUMERIC將適用引號是明顯的非數字像整數或浮點數的所有列。

+0

這是很好的信息 – piRSquared

+0

是的附註:任何與csv格式有關的問題都可以根據我的經驗通過to_csv參數修復,或者你正在嘗試一些東西是不合理的,我建議你總是挖掘to_csv docstring - 我必須認識到它有點混淆,儘管 – Boud

+0

'df.assign (id = df.id.astype(str),value = df.value.astype(str))。to_csv( index = False,quotechar =''', header = None,quoting = csv.QUOTE_NONNUMERIC)'Prints來篩選並證明這一點。我會深入研究它。 – piRSquared

4

轉換爲字符串,並使用+

df.update('"' + df[['id', 'value']].astype(str) + '"') 
print(df) 

使用applymap

df.update(df[['id', 'value']].applymap('"{}"'.format)) 
print(df) 

兩個產生

id type  value 
0 "1"  8 "value1" 
1 "2"  2 "value2" 
2 "3"  7 "value3" 
3 "4"  3 "value4" 
4 "5" 10 "value5" 
5 "6"  3 "value16" 
+0

'df.update'和'df = df.applymap()'有什麼區別? 'df.update'不會創建一個新的df? – MYGz

+0

@MYGz是的,我喜歡語法更好...有時 – piRSquared

+0

爲什麼當我在文件中寫入日期幀,然後出現三個引號@piRSquared – Ekaterina