DataFrame无label属性报错:如何添加label并使aiya.label返回cd、cs、cf列?
问题解答
报错原因
DataFrame本身没有内置的label属性,你直接调用aiya.label是在访问对象的属性,但这个属性未定义,所以触发'DataFrame' object has no attribute 'label'错误。你的cd、cs、cf是DataFrame的列,属于数据内容,不是对象属性,因此不能直接通过.方式以label为名访问。
实现aiya.label返回指定列的方法
方法1:直接添加自定义属性
给DataFrame对象手动赋值一个label属性,指向你需要的列子集:
import pandas as pd # 先加载csv得到DataFrame aiya = pd.read_csv('你的文件.csv') # 给aiya添加label属性,指向cd、cs、cf列 aiya.label = aiya[['cd', 'cs', 'cf']]
之后调用aiya.label就能返回这三列的DataFrame。注意:如果后续对aiya的数据做了修改(比如筛选、新增列),aiya.label不会自动同步更新,需要重新执行上述赋值语句。
方法2:自定义带label属性的DataFrame子类
如果需要label能实时同步DataFrame的最新数据,可以继承pandas的DataFrame类,用@property装饰器实现动态返回:
import pandas as pd class LabeledDataFrame(pd.DataFrame): @property def label(self): # 每次访问label时,实时返回当前的cd、cs、cf列 return self[['cd', 'cs', 'cf']] # 加载csv时使用自定义子类 aiya = LabeledDataFrame(pd.read_csv('你的文件.csv'))
这样无论aiya的数据怎么变化,aiya.label都会返回最新的指定列。
内容的提问来源于stack exchange,提问作者Nocturno
相关产品推荐
相关产品推荐

