Search code examples
pythonpandasdataframefor-looplocal-variables

Python: split dataframe into multiple dataframes by using for loop with locals function


I have a csv file below:

name,apply,percent
A,101,98%
B,388,79%
C,637,88%
D,541,75%
E,345,98%
A,446,85%
D,211,49%

I tried to split dataframe into multiple dataframes as df_A, df_B, df_C, df_D & df_E.

for name in df.groupby('name'):
    locals()['df_'.name]=df[(df.name==name)]
     print(df_A)

It doesn't work. How to fix the code? Many thanks.


Solution

  • You can try this,

    >>> import pandas as pd
    >>> df = pd.read_csv('a.csv')
    >>> for name in df['name'].unique():
    ...     locals()['df_' + name] = df[(df.name == name)]
    ...
    >>> df_A
      name  apply percent
    0    A    101     98%
    5    A    446     85%
    >>> df_B
      name  apply percent
    1    B    388     79%
    >>> df_C
      name  apply percent
    2    C    637     88%
    >>> df_D
      name  apply percent
    3    D    541     75%
    6    D    211     49%
    >>> df_E
      name  apply percent
    4    E    345     98%