Как объединить два списка разной длины в кадр данных Panda? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть два списка, которые должны быть объединены как пандафрейм.Столбцы будут заголовком CSV, а данные содержат строки данных в виде одного списка.

import pandas as pd
columns = [column[0] for column in cursor.description]
len(columns)
>5

data = cursor.fetchall()
len(data)
>2458

len(data[0])
>5

df = pd.DataFrame(data=data, index=None, columns=columns)
>ValueError: Shape of passed values is (1, 2458), indices imply (5, 2458).

Может ли кто-нибудь помочь мне объединить эти два списка в фрейм данных панды?Пожалуйста, дайте мне знать, если я пропускаю какие-либо другие детали.Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Наличие курсора указывает на то, что вы используете pyodbc.data содержит pyodbc.Row объектов и, следовательно, конструктору pd.DataFrame не удается разделить данные.

Попробуйте это

df = pandas.DataFrame([tuple(t) for t in cursor.fetchall()], columns=columns)
0 голосов
/ 17 октября 2018

Ваш CSV-файл, очевидно, имеет 5 столбцов, но ваши данные представляют собой единый список значений.Это означает, что вам также нужен только один заголовок столбца.Pandas жалуется прямо сейчас, потому что размерность списка столбцов (5) не соответствует количеству столбцов в ваших данных (1).Например, это можно исправить, сказав:

df = pd.DataFrame(data=data, index=None, columns=[columns[0]])

Это предполагает, что вы хотите использовать имя первого столбца.

...