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であることが前提になっちゃってます。扱うデータフレームを関数の引数から定義することはできるんでしょうか。