Pythonを使いたい状況において、dplyrと同じようにデータフレーム加工をしたい。
Rのdplyrは物凄く便利で、pandasにも同じように使えるdfplyがあるが、挙動が不安定なことが多い気がする。
ということで、Rのdplyrでやりたいことをpandasでやるにはどう書いたらいいかをメモ。
【dplyr】select(列選択)
dataframe型のまま抽出
df = df[["COLUMN_A"]]
numpyのndarryになる(1次元配列)
df = df["COLUMN_A"]
【dplyr】filter(行選択)
条件が複数あるときは”&”で。
# 条件にあう行を選択
df = df[(1 <= df.COLUMN_A) & (df.COLUMN_A <= 2)]
【dplyr】mutate(行追加または書き換え)
新規列を追加
df['COLUMN_B'] = 0
mutateはif_elseを使うことで、条件に一致する行を書き換えることができる。pandasでやりたいときはこうする。
# 条件と書き換え対象列が同じとき
# COLUMN_Aが75以上のとき、COLUMN_Aを0.0に書き換え
df.COLUMN_A[df.COLUMN_A >= 75.0] = 0.0
# 条件と書き換え対象列が異なるとき → locを使う
# COLUMN_Bが75以上のとき、COLUMN_Aを0.0に書き換え
df.loc[df['COLUMN_B'] >= 75.0, 'COLUMN_A'] = 0.0
コメント