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

                                Thal And Out Agency railway station See also References External links Navigation menuOfficial Web Site of Pakistan RailwaysArchivedOfficial Web Site of Pakistan Railwayseeexpanding ite

                                How can I change the color of pagination dots of UIPageControl?How to change UIPageControl dotsIs there a way to change page indicator dots colorCustomize dot with image of UIPageControl at index 0 of UIPageControlNo visible @interface for 'NSObject<PageControlDelegate>' declares the selector 'pageControlPageDidChange:'How to change the color of pagination dots in UIPageControl with a different color per pagepagecontrol indicator custom image instead of DefaultChanging the colour of UIPageControl dots in MonoTouchpagecontrol selectable page visibility color?Alternative way to load ViewControllers on a UIPageControlHow to set only layer.border-color for UIpage control dots in swiftHow can I develop for iPhone using a Windows development machine?How to change the name of an iOS app?UITableView - change section header coloruipagecontrol indicator(dot)issueCustom UIPageControl dots color not changingchange the interspace between UIPageControl dotsHow to change Status Bar text color in iOSHow can I change image tintColor in iOS and WatchKitUIPageControl dots with larger space in between each dotsHow to change the color of pagination dots in UIPageControl with a different color per page

                                Posting a File and Associated Data to a RESTful WebService preferably as JSON2019 Community Moderator ElectionREST URI convention - Singular or plural name of resource while creating itUploading both data and files in one form using Ajax?How do I upload a file with metadata using a REST web service?REST API - file (ie images) processing - best practicesSpring: JSON data and file in the same requestREST API Put large dataPosting a file and JSON data to Spring rest serviceRESTful Web Service Upload/Download Large Data With JSONREST API Design sending JSON data and a file to the api in same requestPost JSONArray to REST servicePUT vs. POST in RESTParsing values from a JSON file?JavaScript/jQuery to download file via POST with JSON dataHow do I upload a file with metadata using a REST web service?How to POST JSON data with Curl from Terminal/Commandline to Test Spring REST?Separate REST JSON API server and client?what's the correct way to send a file from REST web service to client?How do I write JSON data to a file?What is “406-Not Acceptable Response” in HTTP?REST API - file (ie images) processing - best practices