2016-09-06 15 views
0

各行を別のファイルに印刷するデータフレームがあります。データフレームが例えばわずか50行、​​50を印刷し、0から49にインデックスを出力しますpandas dataframe:len(df)がdf.iterrows()の反復回数に等しくない

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

のようなデータフレームの行を反復します。

ただし、私のデータフレームに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

ただ好奇心が強いですがあなたは真剣に50kのファイルを作成しようとしていますか? –

答えて

2

最初に@EdChumがコメントに記載されているように、質問のタイトルはiterrowsを指しますが、iteritemslenに関連する方向にループします。私はあなたが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

関連する問題