#python #pandas
Вопрос:
Я хочу иметь возможность заключать все значения при экспорте в csv в двойные кавычки, но не заключать имена столбцов в двойные кавычки. Я хочу использовать библиотеку pandas для экспорта в csv.
Это мой текущий выход
"Col1","Col2"
"val1","10"
"val2","15"
"val3","14"
Это то, что я хочу, чтобы мой результат был
Col1,Col2
"val1","10"
"val2","15"
"val3","14"
Кто-нибудь знает, как это сделать?
Спасибо
Комментарии:
1. Ты имеешь в виду
('"' df.astype(str) '"').to_csv("filename.csv")
?2. Это возвращает каждое значение = «»»val1″»»
3. Вы не привели воспроизводимого примера. Пожалуйста, попробуйте включить его в следующий раз!
Ответ №1:
Нашел решение
import pandas as pd
import csv
data = [['val1', 10], ['val2', 15], ['val3', 14]]
df = pd.DataFrame(data, columns = ['Col1', 'Col2'])
df = df.astype(str).applymap(lambda x: '"' x '"')
df.to_csv('file.csv',index=False,quoting=csv.QUOTE_NONE)
Ответ №2:
Один из подходов состоит в том, чтобы написать заголовок и строки отдельно.
import pandas as pd
import csv
df = pd.DataFrame({'col1': ['val1','val2','val3','val4'], 'col2': ['val1','val2','val3','val4']})
with open('filename.csv', 'w') as f:
header_writer = csv.writer(f, delimiter=',', quoting=csv.QUOTE_NONE)
header_writer.writerow(df.columns)
df.to_csv(f, sep=',', header=False, quoting=csv.QUOTE_ALL, index=None)
Ответ №3:
Вы можете попробовать regex
,вот пример.
import re
import pandas as pd
df = pd.DataFrame({
'Col1':['A','B'],
'Col2':['C','D']
})
for column in df.columns:
df[column] = df[column].apply(lambda x: f'"{x}"')
text = df.to_csv(index=None)
text = re.sub('" ','"',text)
print(text)
Выход:
Col1,Col2
"A","C"
"B","D"