打印numpy数组与pandas DataFrame列表时的依赖问题及异常排查
问题分析与解决:为啥numpy和pandas的代码不能同时运行?
嘿,我仔细看了你的代码,问题根本不是numpy和pandas有什么依赖冲突,是你不小心把numpy的核心函数给覆盖掉啦!
问题出在哪?
你写了这行代码:
np.array = []
np.array本来是numpy用来创建数组的核心构造函数,结果你直接把它赋值成了一个空列表!后面你往这个列表里加元素,再调用np.power(np.array,3)的时候,虽然np.power勉强能处理普通列表,但更关键的是——你已经把numpy的array函数给废掉了!
当你两段代码都保留时,numpy那部分的代码可能会触发隐性错误(或者直接报错),导致程序提前终止,后面打印pandas DataFrame的代码根本没机会执行。而当你注释掉其中一部分时,剩下的代码自然能正常运行,这就给你造成了“只能打印其中一个”的错觉。
修正后的代码
首先,绝对不要用numpy的内置函数/属性名当变量名,比如np.array、np.sum这些都不能碰。把变量名改成普通名字,比如my_array,再转换成numpy数组:
import numpy as np import pandas as pd # 换个普通变量名,别用np.array my_array = [] for i in range(7): my_array.append(i) # 用numpy的array函数把列表转成数组 values = np.array(my_array) print(np.power(values, 3)) df = pd.DataFrame({'X':[78,85,96,80,86], 'Y':[84,94,89,83,86],'Z':[86,97,96,72,83]}) print(df)
或者用numpy的内置函数直接生成数组,更简洁高效:
import numpy as np import pandas as pd # 直接生成0到6的numpy数组,不用手动循环 values = np.arange(7) print(np.power(values, 3)) df = pd.DataFrame({'X':[78,85,96,80,86], 'Y':[84,94,89,83,86],'Z':[86,97,96,72,83]}) print(df)
关于numpy和pandas的依赖关系
顺便说一句,numpy和pandas确实有依赖——pandas内部大量使用numpy的数组和计算逻辑,但这和你的问题完全没关系~你的问题纯粹是变量名误用导致的。
内容的提问来源于stack exchange,提问作者user3776800
相关产品推荐
相关产品推荐

