

以下の様な文字列を含むデータがあり、1列目のみ整数にしたいのですが、うまくいかずエラーが表示エラーがでます。  
なぜでしょうか。  
よくわかりません。

データは以下。

[code]

    [['id_NO', 'PROC_YM', 'CL_START', 'CL_STOP'], 
    ['000001', '201912', '2019/12/1', '2019/12/31'],
    ['000022', '201912', '2019/12/1', '2019/12/31'], 
    ['000333', '201912', '2019/12/1', '2019/12/31'], 
    ['004444', '201912', '2019/12/1', '2019/12/31'], 
    ['055555', '201912', '2019/12/1', '2019/12/31'], 
    ['666666', '201912', '2019/12/1', '2019/12/31'], 
    ['020000', '201912', '2019/12/1', '2019/12/31'], 
    ['003300', '201912', '2019/12/1', '2019/12/31'], 
    ['040044', '201912', '2019/12/1', '2019/12/31']]
    
[/code]

スクリプト

[code]

    date['id_NO'] = date['id_NO'].astype(int)
    print(date)
    
[/code]

エラー内容

[code]

    TypeError: list indices must be integers or slices, not str
    
[/code]


CC BY-SA 4.0
2020-04-28T07:52:17.990
66064
2020-04-28T09:03:59.817
2020-04-28T09:03:59.817
3060
38096
question
python python3
文字列を整数に変換できない。


  * データの書き方を見るに Python 組み込みの普通のリストでしょうか。Python の普通のリストはあくまで単なるリストであり、辞書や pandas DataFrame のように文字列を添え字として使いません。`date[1][0]` のように整数を添え字とします。あるいはこのリストを元に pandas DataFrame などに変換してから作業しても良いでしょう。
  * このデータが pandas DataFrame や NumPy Array だったとしても、列の名前として `'id_NO'` 等が使われているのではなく、単に 1 行目に列名が入っているだけに見えます。適切に列の名前を設定する必要があります。


CC BY-SA 4.0
2020-04-28T08:07:48.583
66066
2020-04-28T08:54:19.080
2020-04-28T08:54:19.080
19110
19110
66064
answer


質問にある `.astype()` は `numpy.ndarray` および `pandas.Series`,`pandas.DataFrame` の
method ですので、通常のリストには使用できません。

今回のデータはテーブルデータのようですので、`pandas.DataFrame` に変換してから、質問のmethodを使用するのが良いのかと思います。

[code]

    import pandas as pd
    
    data = [['id_NO', 'PROC_YM', 'CL_START', 'CL_STOP'],
            ['000001', '201912', '2019/12/1', '2019/12/31'],
            ['000022', '201912', '2019/12/1', '2019/12/31'],
            ['000333', '201912', '2019/12/1', '2019/12/31'],
            ['004444', '201912', '2019/12/1', '2019/12/31'],
            ['055555', '201912', '2019/12/1', '2019/12/31'],
            ['666666', '201912', '2019/12/1', '2019/12/31'],
            ['020000', '201912', '2019/12/1', '2019/12/31'],
            ['003300', '201912', '2019/12/1', '2019/12/31'],
            ['040044', '201912', '2019/12/1', '2019/12/31']]
    
    df = pd.DataFrame(data[1:], columns=data[0])
    df['id_NO'] = df['id_NO'].astype(int)
    print(df)
    #    id_NO PROC_YM   CL_START     CL_STOP
    #0       1  201912  2019/12/1  2019/12/31
    #1      22  201912  2019/12/1  2019/12/31
    #2     333  201912  2019/12/1  2019/12/31
    #3    4444  201912  2019/12/1  2019/12/31
    #4   55555  201912  2019/12/1  2019/12/31
    #5  666666  201912  2019/12/1  2019/12/31
    #6   20000  201912  2019/12/1  2019/12/31
    #7    3300  201912  2019/12/1  2019/12/31
    #8   40044  201912  2019/12/1  2019/12/31
    
[/code]


CC BY-SA 4.0
2020-04-28T08:20:50.827
66067
2020-04-28T08:20:50.827
24801
66064
answer