53221


複数のデータフレームがあり、それぞれのデータフレームの大きさを知りたく、次のようなコードを書いています。

[code]

    dfs =['df_a', 'df_b', 'df_c']
    
    for df_name in dfs:
    　　print(df_name)
        df_name.shape
    
[/code]

df_nameが、文字列であり、.shapeは使えないというエラーが出てきます（その通りなのですが）。

[code]

    'str' object has no attribute 'shape'
    
[/code]

どのようにすれば、データフレームについて、繰り返しの処理を行えるのでしょうか？


CC BY-SA 4.0
2019-03-05T20:56:00.893
53217
2019-03-12T03:00:26.207
2019-03-12T03:00:26.207
3060
20148
question
python pandas
Pythonでデータフレーム名に対して繰り返しの処理を行うには？


データフレームの名前とインスタンスを dictで管理すると良いのではないでしょうか

[code]

    dfs = {'df_a':df_a, 'df_b':df_b, 'df_c':df_c}
    for name, df in dfs.items():
        print(name)
        print(df.shape)
    
[/code]


CC BY-SA 4.0
2019-03-05T23:33:06.030
53221
2019-03-05T23:33:06.030
24801
53217
answer


データフレームであれば、そのままprint(df_a.shape)でサイズがわかります。

[code]

    import pandas as pd
    
    df_a = pd.DataFrame(index =[1,1], columns=["a","b"])
    df_b = pd.DataFrame(index =[1,1], columns=["a","b"])
    df_c = pd.DataFrame(index =[1,1], columns=["a","b"])
    
    dfs = [df_a, df_b, df_c]
    
    for df_names in dfs:
        print(df_names.shape)
    
[/code]

リストに入れる前にデータフレームを作成して、それをリストに入れるだけです。  
例では適当なデータフレームを作成してます。  
質問のリストはただの文字列になっているようなので、Pandasの.shapeが作用しません。使おうとしているメソッドが正しい型のものを参照しているのか注意すると、原因が導きやすくなります。

参考になれば幸いです。


CC BY-SA 4.0
2019-03-06T07:42:05.750
53236
2019-03-06T07:47:40.533
2019-03-06T07:47:40.533
30590
30590
53217
answer