Outer join within a Pandas tablePerformant cartesian product (CROSS JOIN) with pandasPython join: why is it string.join(list) instead of list.join(string)?Selecting multiple columns in a pandas dataframeRenaming columns in pandasAdding new column to existing DataFrame in Python pandasDelete column from pandas DataFrame by column name“Large data” work flows using pandasHow to iterate over rows in a DataFrame in Pandas?Select rows from a DataFrame based on values in a column in pandasGet list from pandas DataFrame column headerspandas three-way joining multiple dataframes on columns

Arrow those variables!

How to show a landlord what we have in savings?

Intersection Puzzle

Do UK voters know if their MP will be the Speaker of the House?

I would say: "You are another teacher", but she is a woman and I am a man

Assassin's bullet with mercury

One verb to replace 'be a member of' a club

Is there an expression that means doing something right before you will need it rather than doing it in case you might need it?

How to prevent "they're falling in love" trope

Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?

Can compressed videos be decoded back to their uncompresed original format?

How badly should I try to prevent a user from XSSing themselves?

Why do bosons tend to occupy the same state?

Is it inappropriate for a student to attend their mentor's dissertation defense?

How does a predictive coding aid in lossless compression?

Unlock My Phone! February 2018

Can I run a new neutral wire to repair a broken circuit?

Can we compute the area of a quadrilateral with one right angle when we only know the lengths of any three sides?

Size of subfigure fitting its content (tikzpicture)

How would I stat a creature to be immune to everything but the Magic Missile spell? (just for fun)

Bullying boss launched a smear campaign and made me unemployable

Forgetting the musical notes while performing in concert

Avoiding the "not like other girls" trope?

Can my sorcerer use a spellbook only to collect spells and scribe scrolls, not cast?



Outer join within a Pandas table


Performant cartesian product (CROSS JOIN) with pandasPython join: why is it string.join(list) instead of list.join(string)?Selecting multiple columns in a pandas dataframeRenaming columns in pandasAdding new column to existing DataFrame in Python pandasDelete column from pandas DataFrame by column name“Large data” work flows using pandasHow to iterate over rows in a DataFrame in Pandas?Select rows from a DataFrame based on values in a column in pandasGet list from pandas DataFrame column headerspandas three-way joining multiple dataframes on columns













1















I have a PANDAS dataframe with three string columns that looks something like this:



Name Surname MiddleName
James Bond A
Maggie Sweenie B


I want to create a kind of outer join within the table so that every possible combination of Name, Surname and MiddleName is output. The output that I am looking for is:



Name Surname MiddleName
James Bond A
Maggie Sweenie B
James Sweenie A
James Sweenie B
Maggie Bond A
Maggie Bond B


Any ideas what's the most efficient way to do this ?










share|improve this question






















  • Sorry it is different , I reopen it .

    – Wen-Ben
    Mar 8 at 20:45















1















I have a PANDAS dataframe with three string columns that looks something like this:



Name Surname MiddleName
James Bond A
Maggie Sweenie B


I want to create a kind of outer join within the table so that every possible combination of Name, Surname and MiddleName is output. The output that I am looking for is:



Name Surname MiddleName
James Bond A
Maggie Sweenie B
James Sweenie A
James Sweenie B
Maggie Bond A
Maggie Bond B


Any ideas what's the most efficient way to do this ?










share|improve this question






















  • Sorry it is different , I reopen it .

    – Wen-Ben
    Mar 8 at 20:45













1












1








1








I have a PANDAS dataframe with three string columns that looks something like this:



Name Surname MiddleName
James Bond A
Maggie Sweenie B


I want to create a kind of outer join within the table so that every possible combination of Name, Surname and MiddleName is output. The output that I am looking for is:



Name Surname MiddleName
James Bond A
Maggie Sweenie B
James Sweenie A
James Sweenie B
Maggie Bond A
Maggie Bond B


Any ideas what's the most efficient way to do this ?










share|improve this question














I have a PANDAS dataframe with three string columns that looks something like this:



Name Surname MiddleName
James Bond A
Maggie Sweenie B


I want to create a kind of outer join within the table so that every possible combination of Name, Surname and MiddleName is output. The output that I am looking for is:



Name Surname MiddleName
James Bond A
Maggie Sweenie B
James Sweenie A
James Sweenie B
Maggie Bond A
Maggie Bond B


Any ideas what's the most efficient way to do this ?







python pandas






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 8 at 20:42









Number LogicNumber Logic

17010




17010












  • Sorry it is different , I reopen it .

    – Wen-Ben
    Mar 8 at 20:45

















  • Sorry it is different , I reopen it .

    – Wen-Ben
    Mar 8 at 20:45
















Sorry it is different , I reopen it .

– Wen-Ben
Mar 8 at 20:45





Sorry it is different , I reopen it .

– Wen-Ben
Mar 8 at 20:45












3 Answers
3






active

oldest

votes


















4














IIUC using product



import itertools 
yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
yourdf
Out[937]:
Name Surname MiddleName
0 James Bond A
1 James Bond B
2 James Sweenie A
3 James Sweenie B
4 Maggie Bond A
5 Maggie Bond B
6 Maggie Sweenie A
7 Maggie Sweenie B





share|improve this answer






























    1














    You are looking for a kind of expand_grid functionality, which can be implemented with itertools.product(). From the pandas documentation , you can define expand_grid:



    import itertools

    def expand_grid(data_dict):
    rows = itertools.product(*data_dict.values())
    return pd.DataFrame.from_records(rows, columns=data_dict.keys())

    expand_grid(df.to_dict('list'))
    Out[38]:
    Name Surname MidName
    0 James Bond A
    1 James Bond B
    2 James Sweenie A
    3 James Sweenie B
    4 Maggie Bond A
    5 Maggie Bond B
    6 Maggie Sweenie A
    7 Maggie Sweenie B






    share|improve this answer






























      0














      Without itertools:



      pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)





      share|improve this answer























        Your Answer






        StackExchange.ifUsing("editor", function ()
        StackExchange.using("externalEditor", function ()
        StackExchange.using("snippets", function ()
        StackExchange.snippets.init();
        );
        );
        , "code-snippets");

        StackExchange.ready(function()
        var channelOptions =
        tags: "".split(" "),
        id: "1"
        ;
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function()
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled)
        StackExchange.using("snippets", function()
        createEditor();
        );

        else
        createEditor();

        );

        function createEditor()
        StackExchange.prepareEditor(
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        bindNavPrevention: true,
        postfix: "",
        imageUploader:
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        ,
        onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        );



        );













        draft saved

        draft discarded


















        StackExchange.ready(
        function ()
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55070717%2fouter-join-within-a-pandas-table%23new-answer', 'question_page');

        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        4














        IIUC using product



        import itertools 
        yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
        yourdf
        Out[937]:
        Name Surname MiddleName
        0 James Bond A
        1 James Bond B
        2 James Sweenie A
        3 James Sweenie B
        4 Maggie Bond A
        5 Maggie Bond B
        6 Maggie Sweenie A
        7 Maggie Sweenie B





        share|improve this answer



























          4














          IIUC using product



          import itertools 
          yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
          yourdf
          Out[937]:
          Name Surname MiddleName
          0 James Bond A
          1 James Bond B
          2 James Sweenie A
          3 James Sweenie B
          4 Maggie Bond A
          5 Maggie Bond B
          6 Maggie Sweenie A
          7 Maggie Sweenie B





          share|improve this answer

























            4












            4








            4







            IIUC using product



            import itertools 
            yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
            yourdf
            Out[937]:
            Name Surname MiddleName
            0 James Bond A
            1 James Bond B
            2 James Sweenie A
            3 James Sweenie B
            4 Maggie Bond A
            5 Maggie Bond B
            6 Maggie Sweenie A
            7 Maggie Sweenie B





            share|improve this answer













            IIUC using product



            import itertools 
            yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
            yourdf
            Out[937]:
            Name Surname MiddleName
            0 James Bond A
            1 James Bond B
            2 James Sweenie A
            3 James Sweenie B
            4 Maggie Bond A
            5 Maggie Bond B
            6 Maggie Sweenie A
            7 Maggie Sweenie B






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Mar 8 at 20:48









            Wen-BenWen-Ben

            123k83671




            123k83671























                1














                You are looking for a kind of expand_grid functionality, which can be implemented with itertools.product(). From the pandas documentation , you can define expand_grid:



                import itertools

                def expand_grid(data_dict):
                rows = itertools.product(*data_dict.values())
                return pd.DataFrame.from_records(rows, columns=data_dict.keys())

                expand_grid(df.to_dict('list'))
                Out[38]:
                Name Surname MidName
                0 James Bond A
                1 James Bond B
                2 James Sweenie A
                3 James Sweenie B
                4 Maggie Bond A
                5 Maggie Bond B
                6 Maggie Sweenie A
                7 Maggie Sweenie B






                share|improve this answer



























                  1














                  You are looking for a kind of expand_grid functionality, which can be implemented with itertools.product(). From the pandas documentation , you can define expand_grid:



                  import itertools

                  def expand_grid(data_dict):
                  rows = itertools.product(*data_dict.values())
                  return pd.DataFrame.from_records(rows, columns=data_dict.keys())

                  expand_grid(df.to_dict('list'))
                  Out[38]:
                  Name Surname MidName
                  0 James Bond A
                  1 James Bond B
                  2 James Sweenie A
                  3 James Sweenie B
                  4 Maggie Bond A
                  5 Maggie Bond B
                  6 Maggie Sweenie A
                  7 Maggie Sweenie B






                  share|improve this answer

























                    1












                    1








                    1







                    You are looking for a kind of expand_grid functionality, which can be implemented with itertools.product(). From the pandas documentation , you can define expand_grid:



                    import itertools

                    def expand_grid(data_dict):
                    rows = itertools.product(*data_dict.values())
                    return pd.DataFrame.from_records(rows, columns=data_dict.keys())

                    expand_grid(df.to_dict('list'))
                    Out[38]:
                    Name Surname MidName
                    0 James Bond A
                    1 James Bond B
                    2 James Sweenie A
                    3 James Sweenie B
                    4 Maggie Bond A
                    5 Maggie Bond B
                    6 Maggie Sweenie A
                    7 Maggie Sweenie B






                    share|improve this answer













                    You are looking for a kind of expand_grid functionality, which can be implemented with itertools.product(). From the pandas documentation , you can define expand_grid:



                    import itertools

                    def expand_grid(data_dict):
                    rows = itertools.product(*data_dict.values())
                    return pd.DataFrame.from_records(rows, columns=data_dict.keys())

                    expand_grid(df.to_dict('list'))
                    Out[38]:
                    Name Surname MidName
                    0 James Bond A
                    1 James Bond B
                    2 James Sweenie A
                    3 James Sweenie B
                    4 Maggie Bond A
                    5 Maggie Bond B
                    6 Maggie Sweenie A
                    7 Maggie Sweenie B







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Mar 8 at 20:55









                    Xinbin H.Xinbin H.

                    305




                    305





















                        0














                        Without itertools:



                        pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)





                        share|improve this answer



























                          0














                          Without itertools:



                          pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)





                          share|improve this answer

























                            0












                            0








                            0







                            Without itertools:



                            pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)





                            share|improve this answer













                            Without itertools:



                            pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Mar 8 at 22:28









                            JoergVanAkenJoergVanAken

                            88667




                            88667



























                                draft saved

                                draft discarded
















































                                Thanks for contributing an answer to Stack Overflow!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid


                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.

                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function ()
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55070717%2fouter-join-within-a-pandas-table%23new-answer', 'question_page');

                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

                                2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived

                                Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme