在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>]