从Series.axes返回的列表看起来不像普通列表

时间:2017-01-04 04:20:45

标签: python list pandas numpy

从pandas文档中,我得到Series.axes将返回一个列表,实际上它是一个列表

$ python3 process_data.py 
<class 'list'>

但是,当我尝试打印列表的字符串表示时,我得到了这个

直接打印

print(row.axes)


$ python3 process_data.py 
Index(['rank', 'name','high', 'low', 'analysis'],
      dtype='object')

根本看起来不像普通列表。

>>> [1,2,3,4,5]
[1, 2, 3, 4, 5]

我仍然可以通过list_name[0][index]访问奇怪列表中的信息,这就像一个二维列表。我的意思是如果它的内部类型是list,它怎么会有这种行为。如果它是像对象一样的numpy数组,为什么内部类型仍然是列表。

编辑:

def process_nextfile(date, catagory):
    df1 = pd.read_csv('{}all_csv/{}/catagory{}'.format(BASE_DIR, date, catagory), header = None, names = CATAGORY_HEADER[catagory-1])
    for index, row in df1.iterrows():
        print(row.axes.__name__)
        break

if __name__ == '__main__':
    process_nextfile('2016-04-05', 2)

1 个答案:

答案 0 :(得分:2)

当您使用iterrows()时,每一行都是一个pandas系列,axes属性返回标签/或索引列表。所以列表中包含的是索引对象,请查看这个简单的示例:

s = pd.Series([1,2,3])
s.axes
# [RangeIndex(start=0, stop=3, step=1)]

要获取普通列表,您可以访问索引对象,然后将其转换为列表:

s.axes[0].tolist()
# [0, 1, 2]