Pandas Series调用keys()需带括号访问values无需括号的原因
问题相关示例
我在如下示例中遇到相关疑问:
Country1 = {'Japan': 80, 'China': 450, 'India': 200, 'USA': 250} Country2 = {'Brazil': 100,'China': 500,'India': 210,'USA': 260} # Convert into Pandas Series sales_Q1 = pd.Series(Country1) sales_Q2 = pd.Series(Country2) sales_Q1.keys() #=====> Index(['Japan', 'China', 'India', 'USA'], dtype='object') sales_Q1.values #=====> array([ 80, 450, 200, 250], dtype=int64)
问题描述
将字典转换为Pandas Series对象后,为什么调用keys()获取键索引时需要添加括号,而访问values获取值数组时不需要使用括号?
解答
核心原因非常简单:这两个成员从实现逻辑上根本不是同一类东西。
keys()是Series对象绑定的实例方法,本质就是内置的可调用函数。所有函数都必须加括号触发调用才会执行逻辑、返回结果;如果漏写括号直接写sales_Q1.keys,你拿到的只是这个函数本身的引用,根本得不到实际的索引内容。values是Series对象内置的实例属性,是对象初始化完成后就已经存储好的静态数据,不需要执行额外计算逻辑就能直接访问,自然不需要加括号。
顺带提一句,目前Pandas官方更推荐使用.to_numpy()方法代替.values获取底层值数组,这种方式对返回数组的数据类型控制更稳定,能避免不同版本下的类型兼容问题,不过.values作为Pandas早期版本就存在的经典属性,目前仍然可以正常使用。
内容的提问来源于stack exchange,提问作者Redouane Belkhatmi
相关产品推荐
相关产品推荐

