2015-07-29 7 views
2

Кажется, что функция pandas.to_csv имеет два атрибута, которые делают то же самое.pandas to_csv header vs columns

Возможно, у меня что-то не хватает.

Из документации:

столбцов: последовательность, опционально

Столбцы написать

заголовок: логический или список строки, по умолчанию True

Выпишите имена столбцов. Если указан список строк, предполагается, что это псевдонимы для имен столбцов.

При указании списка столбцов они помещают столбцы в указанный мной порядок.

import pandas as pd 
from StringIO import StringIO 

df = pd.DataFrame({"foo":[1,2], "bar":[1,2]}) 

sio = StringIO() 
df.to_csv(sio) 
sio.getvalue() 
',bar,foo\n0,1,1\n1,2,2\n' 

sio = StringIO() 
df.to_csv(sio, header=['foo', 'bar']) 
sio.getvalue() 
',foo,bar\n0,1,1\n1,2,2\n' 
sio.close() 

sio = StringIO() 
df.to_csv(sio, columns=['foo', 'bar']) 
sio.getvalue() 
',foo,bar\n0,1,1\n1,2,2\n' 
sio.close() 

Если я только хочу, чтобы сортировать порядок столбцов, который один является собственно один использовать?

Единственный сценарий, который я вижу, когда имеет смысл использовать эти два именованных атрибута, - это если я хочу выбирать столбцы, но не напишите заголовок в файл csv.

Это будет означать, что использование columns=['foo', 'bar'] является подходящим вариантом.

ответ

1

При написании этого вопроса я понял ответ, и я подумал, что поделюсь им сразу.

мой пример данных не показать проблему

Использование колонок, порядок столбца изменяется, и заголовок и значения.

df = pd.DataFrame({"foo":[1,2], "bar":[1111,2111]}) 
sio = StringIO() 
df.to_csv(sio, columns=['foo', 'bar']) 
sio.getvalue() 
',foo,bar\n0,1,1111\n1,2,2111\n' 

Использование заголовка заголовка изменяется, но не значения в столбцах.

sio = StringIO() 
df.to_csv(sio, header=['foo', 'bar']) 
sio.getvalue() 
',foo,bar\n0,1111,1\n1,2111,2\n' 

Если вы путаете columns= и header=, ты собираешься иметь плохое время.

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