У меня есть 10 списков с тысячами строк, например:
l1 = ['a1', 'a2', ...],
l2 = ['1', '2', ...],
...,
l10 = ['abc', 'sde', ...]
количество строк у всех одинаковое. Я хотел бы создать файл CSV, например:
name reg... address
'a1' '1'... 'abc'
'a2' '2'... 'sde'
Сначала я подумал об использовании pandas DataFrame: (я использовал только 103 первые строки для тестирования)
data = [l1, l2,..., l10]
lables = ['name', 'reg', ...,'address']
df = pd.DataFrame(data, columns=labels)
....
Я получил эту ошибку:
Traceback (последний вызов был последним):
Файл "ch.py", строка 122, в
список-статусов, список-извлечений, список_источников)
Файл "ch.py", строка 95, на благотворительность
df = pd.DataFrame (данные, столбцы = метки)
Файл "C: \ Users \ MON \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site packages \"
pandas \ core \ frame.py ", строка 369, в init
массивы, столбцы = _to_arrays (данные, столбцы, dtype = dtype)
Файл "C: \ Users \ MON \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \"
pandas \ core \ frame.py ", строка 6284, в _to_arrays dtype = dtype)
Файл "C: \ Users \ MON \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \"
pandas \ core \ frame.py ", строка 6363, в _list_to_arrays
coerce_float = coerce_float)
Файл "C: \ Users \ MON \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \"
pandas \ core \ frame.py ", строка 6420, в _convert_object_array
'столбцы'% (len (столбцы), len (контент)))
AssertionError: 10 переданных столбцов, переданные данные имели 103 столбца
Тогда я попытался использовать:
data = [l1, l2,..., l10]
with open('charity.csv', 'w') as ch_list:
wr = csv.writer(ch_list, lineterminator='\n')
wr.writerows(data)
Но я получил все данные от l1 до l10 в одном столбце.
У меня есть два вопроса:
1- Как мне решить мою проблему? С точки зрения производительности, я предпочитаю использовать DataFrame от pandas, однако я открыт для любых новых предложений.
2-Что означает ошибка, которую я получил для DataFrame и как я могу ее исправить?