大熊猫数据帧:len(df)不等于df.iterrows()中的迭代次数

dli*_*liv 4 python dataframe pandas

我有一个数据框,我想将每一行打印到不同的文件。当数据框仅包含50行时,len(df)50在数据框的行上进行打印和迭代,例如

for index, row in df.iterrows():
    print(index)
Run Code Online (Sandbox Code Playgroud)

将打印从0到的索引49

但是,如果我的数据框包含超过5万行,len(df)则迭代时的迭代次数df.iterrows()会明显不同。例如,len(df)将说例如50'554,并且打印索引将超过40万。

怎么会这样?我在这里想念什么?

Ami*_*ory 6

首先,正如@EdChum在评论中指出的那样,您的问题的标题是指iterrows,但您所给出的示例是指iteritems,它以与垂直的方向循环len。我想你的意思是iterrows(如标题中所示)。

请注意,DataFrame的索引不必是运行索引,而与DataFrame的大小无关。例如:

df = pd.DataFrame({'a': [1, 2, 3, 4]}, index=[2, 4, 5, 1000])

>>> for index, row in df.iterrows():
...     print index
2
4
5
1000
Run Code Online (Sandbox Code Playgroud)

大概是,长的DataFrame只是以不同的方式创建,然后或经过一些操作而影响索引。

如果确实必须使用运行中的索引进行迭代,则可以使用Python的enumerate

>>> for index, row in enumerate(df.iterrows()):
...     print index
0
1
2
3
Run Code Online (Sandbox Code Playgroud)

(请注意,在这种情况下,row它本身就是一个元组。)