如何将两个不同长度的列表合并为 Pandas 数据框?

How to merge two lists of different lengths as a Pandas dataframe?

我有两个列表要合并为 pandas 数据框。这些列将是 CSV 的 header,数据包含作为单个列表的数据行。

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).

有人可以帮我将这两个列表合并为 pandas 数据框吗?如果我遗漏任何其他细节,请告诉我。 谢谢!

您的 csv 文件显然有 5 列,但您的数据是单个值列表。这意味着您也只需要 1 列 header。 Pandas 现在抱怨是因为列列表的维度 (5) 与数据中的列数 (1) 不匹配。例如,您可以通过以下方式解决此问题:

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

假设您要使用第一列名称。

cursos 的存在表示您正在使用 pyodbcdata 包含 pyodbc.Row 个对象,因此 pd.DataFrame 构造函数无法拆分数据。

试试这个

df = pandas.DataFrame([tuple(t) for t in cursor.fetchall()], columns=columns)