Home > OS >  Creating dataframes for every numpy.ndarray in a list
Creating dataframes for every numpy.ndarray in a list

Time:06-18

I am fairly new to Python and trying to figure out how to generate dataframes for multiple arrays. I have a list where the arrays are currently stored:

list = [ [1 2 3 4], [12 19 30 60 95 102] ]

What I want to do is take each array from this list and put them into separate dataframes, with the array contents populating a column of the dataframe like so:

        Array2_df
1       12
2       19
3       30
4       60

I have found several answers involving the use of dictionaries, but am not sure how that would actually solve my problem... I also don't understand how naming the dataframes dynamically would work. I have tried playing around with for loops, but that just overwrote the same dataframe repeatedly. Please help!! Thanks :)

CodePudding user response:

As mentioned in the comments, dynamically created variables is a bad idea. Why not use a single dataframe, like so:

In [1]: zlist = [[1, 2, 3, 4], [12, 19, 30, 60, 95, 102], [1, 2, 4, 5, 1, 6, 1, 7, 8, 21]]

In [2]: pd.DataFrame({f"array_{i}": pd.Series(z) for i, z in enumerate(zlist)})
Out[2]:
    array_0  array_1  array_2
0       1.0     12.0        1
1       2.0     19.0        2
2       3.0     30.0        4
3       4.0     60.0        5
4       NaN     95.0        1
5       NaN    102.0        6
6       NaN      NaN        1
7       NaN      NaN        7
8       NaN      NaN        8
9       NaN      NaN       21

If you really insist on separate dataframes, then you should store them in a dictionary:

df_dict = {f"array_{i}": pd.DataFrame({f"array_{i}": z}) for i, z in enumerate(zlist)}

Then, you can access a specific dataframe by name:

In [8]: df_dict["array_2"]
Out[8]:
   array_2
0        1
1        2
2        4
3        5
4        1
5        6
6        1
7        7
8        8
9       21
  • Related