我不知道为什么,但在安装了新的 Windows 和新的 pycharm 安装后,我在运行一些以前的功能代码时遇到了问题。我现在使用下面的代码收到上述错误。是设置问题还是发生了某些更改导致此代码现在无法运行?错误发生在最后一行。该错误对我来说没有意义,因为 ndarray 到 ndarray 不应该需要任何转换。
import numpy as np
import pyodbc
import pandas as pd
import sqlalchemy as SQL
import torch
import datetime
# Setup your SQL connection
server = [hidden for security]
database = [hidden for security]
username = [hidden for security]
password = [hidden for security]
# This is using the pyodbc connection
cnxn = pyodbc.connect(
'DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = cnxn.cursor()
# This is using the SQLAlchemy connection
engine_str = SQL.URL.create(
drivername="mssql+pyodbc",
username=username,
password=password,
host=server,
port=1433,
database=database,
query={
"driver": "ODBC Driver 17 for SQL Server",
"TrustServerCertificate": "no",
"Connection Timeout": "30",
"Encrypt": "yes",
},
)
engine = SQL.create_engine(engine_str)
storeemployee = []
regionalemployee = []
regionid = []
storeid = []
# get table from dev
with engine.connect() as connection:
result = connection.execute(SQL.text("SELECT StoreId, R_Num, RegionalMerchandiserEmployeeId, StoreMerchandiserEmployeeId from Staging.StoreMerchandiserInput"))
for row in result:
# set your variables = to the results
storeemployee.append(row.StoreMerchandiserEmployeeId)
regionalemployee.append(row.RegionalMerchandiserEmployeeId)
regionid.append(row.R_Num)
storeid.append(row.StoreId)
storeemployee = np.array(storeemployee)
regionalemployee = np.array(regionalemployee)
regionid = np.array(regionid)
storeid = np.array(storeid)
# StoreMerchandiserEmail
data = {'StoreMerchandiserEmployeeId': storeemployee, 'RegionalMerchandiserEmployeeId': regionalemployee,
"R_Num": regionid, "StoreId":storeid}
FinalData = pd.DataFrame(data, columns=['StoreMerchandiserEmployeeId', 'RegionalMerchandiserEmployeeId', 'R_Num', 'StoreId'])
编辑- 完整错误消息:
Traceback (most recent call last):
File "C:\Users\Carter.Lowe\Documents\Python Files\Data Import 2.py", line 56, in <module>
FinalData = pd.DataFrame(data, columns=['StoreMerchandiserEmployeeId', 'RegionalMerchandiserEmployeeId', 'R_Num', 'StoreId'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\frame.py", line 778, in __init__
mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\internals\construction.py", line 443, in dict_to_mgr
arrays = Series(data, index=columns, dtype=object)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\series.py", line 490, in __init__
index = ensure_index(index)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\indexes\base.py", line 7647, in ensure_index
return Index(index_like, copy=copy, tupleize_cols=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\indexes\base.py", line 565, in __new__
arr = sanitize_array(data, None, dtype=dtype, copy=copy)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\construction.py", line 654, in sanitize_array
subarr = maybe_convert_platform(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Carter.Lowe\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\dtypes\cast.py", line 139, in maybe_convert_platform
arr = lib.maybe_convert_objects(arr)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "lib.pyx", line 2538, in pandas._libs.lib.maybe_convert_objects
TypeError: Cannot convert numpy.ndarray to numpy.ndarray
我尝试为您的问题创建一个简单的模拟,但无法复制它。我怀疑这可能是您的数据类型的问题,或者是您的 pandas 安装的问题。
您能否尝试运行我在您的环境中创建的以下示例,看看它是否成功生成 Pandas DataFrame?如果是这样,那么您的安装就很好,您可能想要迭代并更详细地探索您的数据类型。
# Import modules
import pandas as pd
import numpy as np
import random
import string
# Create lists of different data types to test
num_items = 20
# Generate arrays
list1 = np.asarray([np.random.randint(0, 10) for n in range(num_items)]) # Integers
list2 = np.asarray([random.choice(string.ascii_letters) for n in range(num_items)]) # Strings
list3 = np.asarray([np.random.random() for n in range(num_items)]) # Floats
print(
f"Array 1: {list1} \n"
f"Shape: {np.shape(list1)} \n"
f"Array 2: {list2} \n"
f"Shape: {np.shape(list2)} \n"
f"Array 3: {list3} \n"
f"Shape: {np.shape(list3)} \n"
)
# Save as dict and convert to Pandas DataFrame
data = {
"ints": list1,
"strs": list2,
"flts": list3,
}
dataframe = pd.DataFrame(data, columns=["ints", "strs", "flts",])
print(dataframe)