在Python中使用PANDAS iterrows()时,索引不会从零开始

时间:2018-01-17 23:59:24

标签: python pandas loops

我正在运行循环,我遍历DataFrame并在每次迭代时将项附加到列表中。代码是这样的:

    l=[]

    for i,row in df.iterrows():
        print len(l)
        print i
        l.append(df['A'])

获得i和len(l)不相等的情况,并且在后续运行中我可能会有所不同。

我的假设是我是一个整数,每次迭代递增1并从零开始,但这似乎是不正确的。

那么,为循环中的每次迭代定义i的值是什么?

2 个答案:

答案 0 :(得分:1)

使用iterrows对DataFrame进行迭代,为每行提供(index, Series)对,如documentation中所述。但是,Pandas中的 index 并不总是意味着0。

Pandas DataFrame的每一行都有一个标签,也称为索引。这些标签通常是从0到DataFrame中行数的整数,但标签几乎可以是任何内容:

>>> x = pandas.DataFrame(index=[1, 'apples', object()], data={'x': [1, 2, 3]})
>>> x
                                   x
1                                  1
apples                             2
<object object at 0x7f25cdb16b50>  3

在这里,我有一个带有行标签1'apples'object实例的DataFrame。这些是您将在iterrows中看到的指数:

>>> [i for i, row in x.iterrows()]
[1, 'apples', <object object at 0x7f25cdb16b50>]

索引可能比使用MultiIndex es的索引更复杂,但这应足以进行演示。

答案 1 :(得分:1)

根据评论部分,这只是索引。

谢谢。