53343


以下のようなデータフレーム（変数名を"df"としています）の"close"と"open"列の3行目以降に10を掛けたようなデータフレームを取得したいのですが、python3ではどのようなコードを書けば良いでしょうか？

ひどく初心者的な質問で大変申し訳ありませんが、どなたかご教示いただけましたら幸いです。どうぞよろしくお願いします！

[![画像の説明をここに入力](https://i.stack.imgur.com/3ofru.png)](https://i.stack.imgur.com/3ofru.png)


CC BY-SA 4.0
2019-03-10T10:31:01.627
53339
2019-03-10T14:38:33.527
27030
question
python
データフレームで１つの列の要素の一部に１０を掛けたい


以下のようにすると元のデータフレームの"close"と"open"列の3行目以降の値が、元々の値に10を掛けた値に更新されます(動作はpython
3.7.2, pandas 0.23.4で確認してます)。

[code]

    import pandas as pd
    
    # 仮のデータ
    df = pd.DataFrame(
        [[1,1,2],[2,2,3],[3,3,4],[4,4,5]],
        columns=['hoge','close', 'open']
    )
    
    # カラム名から行番号を取得
    i = df.columns.get_loc('close')
    j = df.columns.get_loc('open')
    
    # 3行目以降の、closeおよびopen列の値を更新
    df.iloc[2: ,[i, j]] = df.iloc[2: ,[i, j]].apply(lambda x: x * 10)
    
    
[/code]

また、もともとのデータフレームは更新したくない、ということであれば、`df2 =
df.copy()`でデータフレームをいったんコピーしてから、df2に対して上記の操作をするとよいです。

以下も参考にしてください。

`get_loc()` : [pandas.DataFrameの行番号、列番号を取得 \|
note.nkmk.me](https://note.nkmk.me/python-pandas-get-loc-row-column-num/)  
`iloc()` : [pandasで任意の位置の値を取得・変更するat, iat, loc, iloc \|
note.nkmk.me](https://note.nkmk.me/python-pandas-at-iat-loc-iloc/)  
`apply()` : [pandasで要素、行、列に関数を適用するmap, applymap, apply \|
note.nkmk.me](https://note.nkmk.me/python-pandas-map-applymap-apply/)


CC BY-SA 4.0
2019-03-10T13:38:09.227
53343
2019-03-10T13:38:09.227
12561
53339
answer


`df`を直接変更してよければ

[code]

    df["close"][2:] *= 10
    df["open"][2:] *= 10
    
[/code]

とできます。


CC BY-SA 4.0
2019-03-10T14:38:33.527
53347
2019-03-10T14:38:33.527
9464
53339
answer