【Python】Rの”dplyr”とPythonの”pandas”の対応(pandasで書く)

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

コメント