Есть ли способ заключить все значения в двойные кавычки при экспорте в csv с помощью Pandas? (Но не имена столбцов)

#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"