User:Python Pandaデータフレームをどのように反復しますか？ Assistant:パンダの反復はアンチパターンであり、他のすべてのオプションを使い果たしたときにのみ行うべきことです。数千列以上の名前の「Iter」を使用して機能を使用しないでください。そうしないと、多くの待機に慣れる必要があります。

何かを計算しますか？その場合、この順序でメソッドを検索します。
    1.ベクトル化
    2. Cythonルーチン
    3.包含をリストします
    4. dataframe.apply（）
    5. dataframe.itertuples（）およびdataframe.iteritems（）
    6. dataframe.iterrows（）

ITERROWSとITERTPLESは、順次処理のために行オブジェクト/命名を生成するなど、非常にまれな状況で使用する必要があります。これは、これらの機能が実際に役立つ唯一のことです。

かなりの数の基本的な操作と計算は、パンダによって「ベクトル化」されます（numpy、またはcythonized functionsを介して）。これには、算術、比較、（ほとんどの）削減、再形成、結合、およびグループBy操作が含まれます。 
User:それぞれのコード例を教えてください。
もちろん！パンダの異なる反復方法のそれぞれのコード例は次のとおりです。

ベクトル化された操作：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = df ['col1'] + df ['col2']
印刷（df）
Cythonルーチン：
Cythonルーチンは、PythonのスーパーセットであるCython言語で書かれた関数です。コードの最もパフォーマンスの重要な部分をCythonで記述し、PythonコードのCython関数を呼び出すことができます。
Cythonを使用して2つの列を追加する例は次のとおりです。

PDとしてパンダをインポートします
npとしてnumpyをインポートします
Cython Import Boundscheck、Wraparoundから

@boundscheck（false）
@wraparound（false）
def cy_add_columns（double [：、：] df）：
    cdef int n = df.shape [0]
    cdef int m = df.shape [1]
    cdef double [：] res = np.empty（（n、m + 1）、dtype = np.double）
    範囲（n）のiの場合：
        range（m）のjの場合：
            res [i、j] = df [i、j]
        res [i、m] = df [i、0] + df [i、1]
    RESを返します

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
np_array = df.values
new_col = cy_add_columns（np_array）
df = pd.dataframe（new_col、columns = ['col1'、 'col2'、 'col3']））
印刷（df）


概念を一覧表示します：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = [x + y for x、y in zip（df ['col1']、df ['col2']]]]]
印刷（df）


dataFrame.Apply（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = df.apply（lambda row：row ['col1'] + row ['col2']、axis = 1）
印刷（df）


dataframe.itertuples（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df.itertuples（）の行の場合：
    df.at [row.index、 'col3'] = row.col1 + row.col2
印刷（df）


dataframe.iterrows（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
インデックスの場合、行

ベクトル化：

df ['col3'] = df ['col1'] + df ['col2']


Cythonルーチン：使用する特定のルーチンに依存するため、適用されません。

概念を一覧表示します：

df ['col3'] = [x + y for x、y in zip（df ['col1']、df ['col2']]]]]


dataFrame.Apply（）：

def add_cols（row）：
    return row ['col1'] + row ['col2']
df ['col3'] = df.apply（add_cols、axis = 1）


dataframe.itertuples（）：

col3 = []
df.itertuples（）の行の場合：
    col3.append（row.col1 + row.col2）
df ['col3'] = col3


dataframe.iterrows（）：

col3 = []
インデックスの場合、df.iterrows（）の行：
    col3.append（row ['col1'] + row ['col2']）
df ['