LoginSignup
0
0

PandasによるDataFrameの値更新について

Posted at

背景

pandasの特定行の値を更新したいが反映されないケースがあったので調査した。

調査結果

下記のミスケースでは、
master_df の一部を選択してコピーを作成し、そのコピーに対して "customer_name" の値が "XYZ" に変更されることを意味します。しかし、元の master_df は変更されず、警告も表示されません。つまり、意図した変更が元のデータフレームに反映されないという問題が発生します

元のデータフレームに対して、.loc や .iloc を使用してデータを選択し、その選択されたビューに対して変更を加える必要があります。

print(master_df[master_df["customer_id"] == "IK152942"]["customer_name"])

#ミスケース
master_df[master_df["customer_id"] == "IK152942"]["customer_name"] = "XYZ"
print(master_df[master_df["customer_id"] == "IK152942"]["customer_name"])

#成功ケース
master_df.loc[master_df["customer_id"] == "IK152942", "customer_name"] = "XYZ"
print(master_df[master_df["customer_id"] == "IK152942"]["customer_name"])

出力

0    平田 裕次郎
Name: customer_name, dtype: object
0    平田 裕次郎
Name: customer_name, dtype: object
0    XYZ
Name: customer_name, dtype: object
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0