2016-09-06 101 views
0

我有一個數據幀,我想將每行打印到不同的文件。當數據幀由例如只有50行,​​將打印50並遍歷數據幀的行等pandas dataframe:len(df)不等於df.iterrows()中的迭代次數

for index, row in df.iterrows(): 
    print(index) 

將打印索引從049

但是,如果我的數據幀包含超過50'000行,​​和迭代的次數在迭代df.iterrows()時有很大不同。例如,​​將會說例如50'554,印刷指數將超過400'000。

這怎麼可能?我在這裏錯過了什麼?

+2

因爲[' iteritems'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iteritems.html)返回列名稱序列對,請檢查文檔 – EdChum

+0

您可能也會更好地使用' df.shape'並索引你需要的尺寸 – Andrew

+0

只是好奇 - 但你是否真的打算創造5萬個文件? –

回答

2

首先,@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 

想必,你長數據幀剛剛創建不同的話,或進行一些操作,影響了指數。

如果你真的必須與正在運行的指標迭代,你可以使用Python enumerate

>>> for index, row in enumerate(df.iterrows()): 
...  print index 
0 
1 
2 
3 

(需要注意的是,在這種情況下,row本身是一個元組)

+0

完美,謝謝!這說明了很多。 – dliv

+0

是的,我的意思是'iterrows()',對不起這個錯誤感到抱歉。 – dliv