
[英]# pandas DataFrame ValueError: Shape of passed values is (1, 3), indices imply (3, 3)
[英]pandas dataframe Shape of passed values is (5, 1), indices imply (5, 2)
我看到几个类似的问题,但他们没有解决我的问题。
简短版本:如果我创建一个元组列表以用作 dataframe 的输入,则一切都按预期工作。 如果元组列表是 SQL 查询的结果,我会收到主题名称中提到的错误。 这两个元组列表看起来与我相同(我通过从第二个列表复制创建了第一个列表,因此它们应该相同),但与 pandas 不同。 任何帮助将不胜感激。
长版:如果我这样做:
query_results = [('Pick_Task', 'task_internal_id'), ('Pick_Task', 'task_id'), ('Pick_Task', 'date_created'),
('Pick_Task', 'plan'), ('Pick_Task', 'employee_actual')]
df = pd.DataFrame(query_results, columns=['Table Name','Column Name'])
print(df)
我明白了(这是我所期望的):
Table Name Column Name
0 Pick_Task task_internal_id
1 Pick_Task task_id
2 Pick_Task date_created
3 Pick_Task plan
4 Pick_Task employee_actual
如果我这样做:
query = """SELECT TABLE_NAME, COLUMN_NAME
FROM Analyst.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Pick_Task'
"""
with conn.cursor() as cursor:
cursor.execute(query)
query_results = cursor.fetchall()
print(query_results)
df = pd.DataFrame(query_results, columns = ['Table Name', 'Column Name'])
我明白了(这是我所期望的):
[('Pick_Task', 'task_internal_id'), ('Pick_Task', 'task_id'), ('Pick_Task', 'date_created'), ('Pick_Task', 'plan'), ('Pick_Task', 'employee_actual')]
但我也得到了这个(这不是我所期望的,也是我在这里寻求帮助的原因):
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_3200/749747456.py in <module>
9 print(query_results)
10
---> 11 df = pd.DataFrame(query_results, columns = ['Table Name', 'Column Name'])
~\Miniconda3\envs\da1\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
709 )
710 else:
--> 711 mgr = ndarray_to_mgr(
712 data,
713 index,
~\Miniconda3\envs\da1\lib\site-packages\pandas\core\internals\construction.py in ndarray_to_mgr(values, index, columns, dtype, copy, typ)
322 )
323
--> 324 _check_values_indices_shape_match(values, index, columns)
325
326 if typ == "array":
~\Miniconda3\envs\da1\lib\site-packages\pandas\core\internals\construction.py in _check_values_indices_shape_match(values, index, columns)
391 passed = values.shape
392 implied = (len(index), len(columns))
--> 393 raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}")
394
395
ValueError: Shape of passed values is (5, 1), indices imply (5, 2)
遇到类似问题,尝试从列表中创建 DataFrame:
dt = ['a','b','c']
df = pd.DataFrame(data=dt, columns=['1','2','3'])
通过将 'data' 参数作为列表列表传递来解决:
df = pd.DataFrame(data=[dt], columns=['1','2','3'])
所以你应该尝试:
df = pd.DataFrame([query_results], columns = ['Table Name', 'Column Name'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.