日々精進

新しく学んだことを書き留めていきます

DataFrame.locで複数列を一度に代入できない

以下のようなコードで、あるDataFrameの4つの列に別のDataFrameの値を代入しようとしたが、できなかった(代入してもsalesの値がNaNのまま)

sales.loc[mask, [SALES_COUNT_MA14, SALES_COUNT_MMAX14, SALES_COUNT_MMIN14, SALES_COUNT_MS14, SALES_COUNT_MM14]] = merged.iloc[:, 2:]

以下のように1列のみが対象なら代入できる。

sales.loc[mask, SALES_COUNT_MA14] = merged.iloc[:, 2]

以下のように.locの代わりに[]を使って代入先の列を指定すると代入できる。

sales = sales[mask]
sales[[SALES_COUNT_MA14, SALES_COUNT_MMAX14, SALES_COUNT_MMIN14, SALES_COUNT_MS14, SALES_COUNT_MM14]] = merged.iloc[:, 2:]

謎な仕様だな。。使い方が間違ってるのかな。