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万。
怎么会这样?我在这里想念什么?
首先,正如@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它本身就是一个元组。)