我有一个数据框,我想将每一行打印到另一个文件。当数据帧由例如只有50行,len(df)
将打印50
并迭代数据框的行,如
for index, row in df.iterrows():
print(index)
会将索引从0
打印到49
。
但是,如果我的数据框包含超过50&000; 000行,len(df)
和迭代df.iterrows()
时的迭代次数差别很大。例如,len(df)
会说例如50' 554和打印指数将超过400&000; 000。
这怎么可能?我在这里缺少什么?
答案 0 :(得分: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
据推测,你的长DataFrame只是以不同方式创建,或者经历了一些操作,影响了索引。
如果真的必须使用正在运行的索引进行迭代,则可以使用Python enumerate
:
>>> for index, row in enumerate(df.iterrows()):
... print index
0
1
2
3
(请注意,在这种情况下,row
本身就是一个元组。)