#python #pandas #numpy #dataframe #export-to-csv
#python #панды #numpy #фрейм данных #экспорт в csv
Вопрос:
Я пытаюсь экспортировать фрейм данных pandas с помощью to_csv, чтобы его можно было обработать другим инструментом, прежде чем использовать его снова с помощью python. Это набор данных токенов с 5 тыс. столбцов. При экспорте заголовок разделяется на две строки. Возможно, это не проблема для pandas, но в этом случае мне нужно экспортировать его в одну строку csv. Это ограничение pandas или формат csv?
В настоящее время поиск не дал совместимых результатов. Единственное решение, которое я придумал, — это записать имена столбцов и значения отдельно, например. сначала записать список столбцов str, а затем массив numpy в csv. Можно ли это реализовать, и если да, то как?
Комментарии:
1. Откуда вы знаете, что он разделен на 2 строки? Это просто ваш просмотрщик или он действительно на 2 строках?
2. Будьте осторожны, в файле csv строка может занимать несколько строк. Заголовок просто разбит на несколько строк, а не на несколько строк?
3. @EdChum как я могу убедиться, что это не просто мой просмотрщик? При открытии в Excel он заполняет две разные ячейки.
4. Ну, когда вы читаете csv обратно в pandas, остается ли количество столбцов одинаковым? Если да, то это как-то связано с Excel
Ответ №1:
Для меня эта проблема была вызвана наличием нескольких индексов. Самый простой способ решить эту проблему — указать свои собственные заголовки. Я нашел ссылку на вызываемую опцию tupleize_cols
, но она не существует в текущих (1.2.2) pandas.
Я использовал следующую агрегацию:
df.groupby(["device"]).agg({
"outage_length":["count","sum"],
}).to_csv("example.csv")
Это привело к следующему выводу csv:
,outage_length,outage_length
,count,sum
device,,
device0001,3,679.0
device0002,1,113.0
device0003,2,400.0
device0004,1,112.0
Я указал свои собственные заголовки в вызове to_csv
; исключая мой group_by
, следующим образом:
}).to_csv("example.csv",header=("flaps","downtime"))
И получил следующий вывод csv, который был гораздо более приятным для программного обеспечения для работы с электронными таблицами:
device,flaps,downtime
device0001,3,679.0
device0002,1,113.0
device0003,2,400.0
device0004,1,112.0