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

在Python中使用iterrows()时,索引不从零开始,python,pandas,loops,Python,Pandas,Loops,我正在运行一个循环,在这个循环中,我遍历一个数据帧,并在每次迭代时将一个项目附加到一个列表中。代码如下所示: l=[] for i,row in df.iterrows(): print len(l) print i l.append(df['A']) 得到一个i和len(l)不相等的情况,在随后的运行中,i可能不同 我的假设是,我是一个整数,每次迭代递增一,从零开始,但这似乎是不正确的 那么,是什么为循环中的每次迭代定义了i的

我正在运行一个循环,在这个循环中,我遍历一个数据帧,并在每次迭代时将一个项目附加到一个列表中。代码如下所示:

    l=[]

    for i,row in df.iterrows():
        print len(l)
        print i
        l.append(df['A'])
得到一个i和len(l)不相等的情况,在随后的运行中,i可能不同

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


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

使用
iterrows
对数据帧进行迭代,会为每一行提供
(索引,系列)
对,如中所述。然而,熊猫的指数并不总是意味着0

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

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

索引可能比es更复杂,但这足以进行演示。

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


谢谢。

您是否尝试过检查该系统?
iterrows
迭代器返回一个
tuple
,该tuple具有该行的索引值,以及一个表示该行的
pd.Series
。对于i,vs in zip(df.index,df.values):yield i,pd.Series(vs)@juanpa.arrivillaga好的,谢谢,如果我想让我从零开始,每次递增,我可以只重设df.reset_索引。感谢enumerate(df.iterrows())中的i(idx,row)或
>>> [i for i, row in x.iterrows()]
[1, 'apples', <object object at 0x7f25cdb16b50>]