【问题标题】:List returned from Series.axes doesn't look like a normal list从 Series.axes 返回的列表看起来不像普通列表
【发布时间】:2017-05-18 07:00:39
【问题描述】:

从 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]访问奇怪列表中的信息,这就像一个二维列表。我的意思是如果它的内部类型是列表,它怎么会有这种行为。如果是numpy的数组类object,为什么内部类型还是list。

编辑:

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)

【问题讨论】:

  • 我不用pandas,但是你试过row.axes. __name__吗?
  • @tyteen4a03 'list' object has no attribute '__name__'
  • @MYGz 完整代码已添加。 csv 只是一个普通的 csv 文件。没什么花哨的
  • @Bobby 它给出了熊猫系列对象的列表。你的要求是什么?您可以在迭代 df.iterrows() 时执行 row.tolist() 以转换为列表。

标签: python list pandas numpy


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多