70418


Jupyterで下記にある複数のtxtファイルを一度に読み込むにはどうすればいいのでしょうか。  
やりたい事はPC内のfileというディレクトリに格納された22のファイルを読み込んで、それぞれを名前の異なるdataFrameに格納したいです。

皆様でしたらどうされるでしょうか。  
大変恐縮ですが、ご教授いただけましたら幸いです。

■txtファイル  
1_1_0.txt  
1_2_0.txt  
1_3_0.txt  
2_1_0.txt  
2_2_0.txt  
2_3_0.txt  
2_4_0.txt  
2_5_0.txt  
2_6_0.txt  
2_7_0.txt  
2_8_0.txt  
3_1_0.txt  
3_2_0.txt  
3_3_0.txt  
3_4_0.txt  
3_5_0.txt  
3_6_0.txt  
3_7_0.txt  
3_8_0.txt  
4_6_0.txt  
4_7_0.txt  
4_8_0.txt


CC BY-SA 4.0
2020-09-15T00:22:19.687
70395
2020-09-15T14:58:06.533
2020-09-15T02:30:55.083
41905
41905
question
python
Pythonでフォルダ内の複数のtxtファイルを一度に読み込み、dataFrameに格納したい


`exec`を使用するのはでどうですかね。

[code]

    file_names = ['1_1_0', '1_2_0', '1_3_0', '2_1_0', '2_2_0', '2_3_0', '2_4_0', '2_5_0', '2_6_0', '2_7_0', '2_8_0', '3_1_0', '3_2_0', '3_3_0', '3_4_0', '3_5_0', '3_6_0', '3_7_0', '3_8_0', '4_6_0', '4_7_0', '4_8_0']
    for file_name in file_names:
        df = pd.read_csv('file/' + file_name + '.txt')
        exec('df_{} = df'.format(file_name))
    del df
    
[/code]

※ファイル数があまりにも多い場合は、このような少しトリッキーな方法でもいいと思いますが、1ファイルずつ読み込んだ方が可読性は高いかもしれません。


CC BY-SA 4.0
2020-09-15T01:08:47.370
70398
2020-09-15T01:13:56.117
2020-09-15T01:13:56.117
21092
21092
70395
answer


以下の様にして、`pandas.DataFrame` オブジェクトを辞書(`dict`)に格納する方法も考えられます。  
この場合、`df['1_1_0']` や `df['1_2_0']` などとしてアクセスする事が可能です。

[code]

    import glob
    import os
    import pandas as pd
    
    df = {}
    for f in glob.glob(os.path.join("./", "file", "*.txt")):
      name = os.path.splitext(os.path.basename(f))[0]
      df[name] = pd.read_csv(f)
    
    name = sorted(df.keys())
    for i in (0, -1):
      print(f"name = {name[i]}\n{df[name[i]]}")
    
    # =>
    name = 1_1_0
       a  b  c
    0  1  1  0
    name = 4_8_0
       a  b  c
    0  4  8  0
    
[/code]


CC BY-SA 4.0
2020-09-15T14:58:06.533
70418
2020-09-15T14:58:06.533
70395
answer