https://keichang.hatenadiary.jp/archive

0から始めるFX自動売買

(ほぼ)放ったらかしで月利3%を目指します。

Pandasでエクセルのcountifを実装 | 特定列の各要素の出現回数を記録する

python初心者の備忘録です。

エクセルのcountifをpandasに実装しました。Dataframeの最終列にcountifを追加します。

たまに使うので、関数にしておきました。

import pandas as pd

df = pd.Dataframe() # データフレームを定義。

def countif(INPUT_COL_NAME='new_col_name', TARGET_COL='col_name'):
    # 0で初期化した列を最終列に追加
    COL_NAME = INPUT_COL_NAME
    TARGET_COL = TARGET_COL
    df[COL_NAME] = 0

    # 列番号取得
    COL_INDEX = df.columns.get_loc(COL_NAME)
    # index, valueでループ
    for index, email in enumerate(df[TARGET_COL]):
        for key, num in df[TARGET_COL].value_counts().items():
            if email == key:
                df.iat[index, COL_INDEX] = num
                continue

    

value_counts()で取得した値を辞書型オブジェクトのようにkey, value で取得できる、というのがポイントです。

データフレーム名がdfであることが前提になっちゃってます。扱うデータフレームを関数の引数から定義することはできるんでしょうか。