質問編集履歴
2
参考にしたリンク先の追加
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -17,6 +17,7 @@ | |
| 17 17 |  | 
| 18 18 | 
             
            警告文は、
         | 
| 19 19 | 
             
            ```
         | 
| 20 | 
            +
            SettingWithCopyWarning:
         | 
| 20 21 | 
             
            A value is trying to be set on a copy of a slice from a DataFrame.
         | 
| 21 22 | 
             
            Try using .loc[row_indexer,col_indexer] = value instead
         | 
| 22 23 |  | 
| @@ -26,6 +27,10 @@ | |
| 26 27 | 
             
            ### 試したこと
         | 
| 27 28 | 
             
            警告文にあるリンク先の情報などを基に、①の行をdf_PL.loc[:,"決算期"] = df_PL.loc[:,"決算期"].str[-7:]とか、df_PL["決算期"] = df_PL["決算期"].copy().str[-7:]などと書いてみましたが、警告文は消えませんでした。
         | 
| 28 29 |  | 
| 30 | 
            +
            <参考リンク>
         | 
| 31 | 
            +
            [Returning a view versus a copy - pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy)
         | 
| 32 | 
            +
            [pandas の SettingWithCopyWarning で苦労した話](https://qiita.com/HEM_SP/items/56cd62a1c000d342bd70)
         | 
| 33 | 
            +
             | 
| 29 34 | 
             
            そこで、より単純なデータフレームを作って同じ処理をした所、こちらではSettingWithCopyWarningの警告は出ませんでした。株探のサイトからクローリングしたデータに何か問題があるのかと思いましたが、原因はよく分からないままです。
         | 
| 30 35 | 
             
            ```Python
         | 
| 31 36 | 
             
            #警告が出ないプログラム
         | 
1
プログラムを修正
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -7,8 +7,9 @@ | |
| 7 7 | 
             
            import pandas as pd
         | 
| 8 8 |  | 
| 9 9 | 
             
            url = "https://kabutan.jp/stock/finance?code=7203"
         | 
| 10 | 
            -
            df_list = pd.read_html(url)
         | 
| 10 | 
            +
            df_list = pd.read_html(url)  #html内にあるテーブルをデータフレームとして取得
         | 
| 11 11 | 
             
            df_PL = df_list[3].dropna()
         | 
| 12 | 
            +
            #print(df_PL.dtypes)
         | 
| 12 13 |  | 
| 13 14 | 
             
            df_PL["決算期"] = df_PL["決算期"].str[-7:]  #①年月だけ抽出
         | 
| 14 15 | 
             
            print(df_PL)
         | 
| @@ -35,7 +36,6 @@ | |
| 35 36 | 
             
                "U 2017.03",
         | 
| 36 37 | 
             
                "U 2018.03",
         | 
| 37 38 | 
             
            ]
         | 
| 38 | 
            -
             | 
| 39 39 | 
             
            #print(df_PL2.dtypes)
         | 
| 40 40 |  | 
| 41 41 | 
             
            df_PL2["決算期"] = df_PL2["決算期"].str[-7:]  #年月だけ抽出
         | 
