Search code examples
pythonpandasindexingconcatenation

pandas, expand series of dataframes


I have a series that looks like this:

     result
3    pd.DataFrame({"ABC":1,"American":2,"Heroes":3})
8    pd.DataFrame({"ABC":1,"American":2,"Heroes":3})
11   pd.DataFrame({"ABC":1,"American":2,"Heroes":3})
14   pd.DataFrame({"ABC":1,"American":2,"Heroes":3})
17   pd.DataFrame({"ABC":1,"American":2,"Heroes":3})
20   pd.DataFrame({"ABC":1,"American":2,"Heroes":3})

How do I produce this result:

     ABC    American    Heroes
3    1      2           3
8    1      2           3
11   1      2           3
14   1      2           3
17   1      2           3
20   1      2           3

This is driving me crazy, cuz if concat I loose my index.

here's my closest try pd.concat(myDf.tolist(), axis=1)


Solution

  • This is a pretty convoluted structure, I tried reconstructing your series of dataframes this way (I don't see any series with this structure in the link you point to):

    df_list = [pd.DataFrame({"ABC":[1],"American":[2],"Heroes":[3]}),
               pd.DataFrame({"ABC":[1],"American":[2],"Heroes":[3]}),
               pd.DataFrame({"ABC":[1],"American":[2],"Heroes":[3]})]
    
    series = pd.Series(df_list)
    

    And to get what you want:

    df = pd.DataFrame(series\
                          .apply(lambda x : x.squeeze().to_list())\
                          .to_list(),
                      columns=series[0].columns)
    

    Results:

        ABC American    Heroes
    0   1   2           3
    1   1   2           3
    2   1   2           3