Pandas DataFrame使用copy方法报错:'function'对象无dtypes属性
问题:使用pandas的.copy方法后无法访问DataFrame属性
背景
我正在处理数据库和DataFrame,需要生成提取转换后的DataFrame副本,所以打算用.copy方法创建独立的DataFrame,当前使用的是Jupyter Notebook。
可复现示例
我执行的代码如下:
import pandas as pd # 从字典创建DataFrame technologies = { 'Courses':["Spark","PySpark","Hadoop"], 'Fee' :[20000,25000,26000], 'Duration':['30day','40days','35days'], 'Discount':[1000,2300,1500] } raw = pd.DataFrame(technologies) # 复制DataFrame做备份 df = raw.copy print(df)
输出:
<bound method NDFrame.copy of Courses Fee Duration Discount 0 Spark 20000 30day 1000 1 PySpark 25000 40days 2300 2 Hadoop 26000 35days 1500>
此时看起来好像没问题,但当我对这个df执行dtypes这类操作时:
df.dtypes
输出:
AttributeError: 'function' object has no attribute 'dtypes'
问题原因与解决方案
问题出在df = raw.copy这一行——你没有调用copy方法,只是把方法本身赋值给了df,所以df现在是一个函数对象,而不是DataFrame。
只需要给copy加上括号,调用这个方法:
df = raw.copy()
这样df就会是raw的DataFrame副本,之后再执行df.dtypes就能正常返回各列的数据类型了。
内容的提问来源于stack exchange,提问作者mrCatlost
相关产品推荐
相关产品推荐

