1. ホーム
  2. python

[解決済み] Pythonです。Pandas Dataframe 列全体にスカラーを乗算する方法

2023-04-24 06:47:10

質問

データフレームの各列の要素にスカラーを乗じるにはどうしたらよいでしょうか。 (私はSOで探してみましたが、正しい解決策を見つけることができないようです。)

のようなことをやります。

df['quantity'] *= -1 # trying to multiply each row's quantity column with -1

は警告を出します。

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

注:可能であれば、データフレーム上で反復してこのようなことをしたくありません...列全体に対する標準的な数学演算は、ループを書くことなく可能であるべきだと思うからです。

for idx, row in df.iterrows():
    df.loc[idx, 'quantity'] *= -1

EDIT :

私は 0.16.2 のPandasを実行しています。

フルトレース

 SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s

どのように解決するのですか?

少し調べてみたところ、こんな答えが返ってきました。

df.loc[:,'quantity'] *= -1 #seems to prevent SettingWithCopyWarning