52609


[pandasでcsvをまとめて取り込みたい](https://ja.stackoverflow.com/questions/35793/pandas%E3%81%A7csv%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%9F%E3%81%84)

[code]

    data=[0]*100
    while(i<100):
        data[i] = pd.read_csv('1 o_%03d.csv'%i)
        i+=1
    
[/code]

を参考に、

[code]

    def mkdf():
        data=[0]*25
        while(i<25):
            data[i] = pd.read_csv('1 o_%03d.csv'%i)
            i+=1
    
[/code]

としたところ、上のように関数を使わずにベタで書くと`print(data[3])`のようにすれば表示できますが、mkdf()を実行したあとprintしても表示されません。  
どのようにしたらベタで書いたものと同様の結果が得られるでしょうか？  
returnとかglobalとか試しましたがどうにもうまくいかないです。

どうぞよろしくお願いいたします。


CC BY-SA 4.0
2019-02-06T16:37:35.507
52606
2019-02-06T23:35:14.233
12457
question
python pandas
pandasで連番のcsvを読み込むのを関数化する


`data`を`mkdf()`の外(グローバル)に出して、`mkdf()`の中でglobal宣言することと、  
`i`を`while()`の前に 0 で初期化するのが良いのではないでしょうか。

[code]

    data=[0]*25
    
    def mkdf():
        global data
        i=0
        while(i<25):
            data[i] = pd.read_csv('1 o_%03d.csv'%i)
            i+=1
    
[/code]


CC BY-SA 4.0
2019-02-06T23:35:14.233
52609
2019-02-06T23:35:14.233
26370
52606
answer