私はパンダのデータフレームを持っていますdf
:
c1 c2
0 10 100
1 11 110
2 12 120
このデータフレームの行を反復処理するにはどうすればよいでしょうか。各行について、列の名前でその要素 (セル内の値) にアクセスします。例:
for row in df.rows:
print(row['c1'], row['c2'])
私は見つけた同様の質問は、次のいずれかを使用することを推奨します。
-
for date, row in df.T.iteritems():
-
for row in df.iterrows():
row
しかし、そのオブジェクトが何であるか、またそれをどのように操作すればよいかがわかりません。
ベストアンサー1
DataFrame.iterrows
インデックスと行の両方を(シリーズとして)生成するジェネレータです。
import pandas as pd
df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})
df = df.reset_index() # make sure indexes pair with number of rows
for index, row in df.iterrows():
print(row['c1'], row['c2'])
10 100
11 110
12 120
義務的な免責事項ドキュメンテーション
pandas オブジェクトの反復処理は、一般的に時間がかかります。多くの場合、行を手動で反復処理する必要はなく、次のいずれかの方法で回避できます。
- ベクトル化されたソリューションを探します。組み込みメソッドや NumPy 関数、(ブール) インデックスなどを使用して、多くの操作を実行できます。
- 一度に全データフレーム/シリーズで動作できない関数がある場合は、
apply()
値を反復する代わりに、関数の適用。- 値を繰り返し操作する必要があるがパフォーマンスが重要な場合は、内部ループをcythonまたはnumbaで書くことを検討してください。パフォーマンスの向上このアプローチのいくつかの例については、セクションを参照してください。
さらに詳しく知りたい場合は、このスレッドの他の回答で iter* 関数の代替手段についてさらに詳しく説明しています。