Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to convert a dataframe into a list of 3-tuples

I would like to create a directed graph with use of the networkx library in python.

I have a pandas dataframe that looks like this:

                                 Head Mounted Display  Marker  Smartphone
    2D data extrusion                               3       0           1   
    AgiSoft PhotoScan 3D design                     1       2           2   
    AuGeo Esri AR template                          1       1           2   
    BIM                                             1       1           0   
    Blender 3D design                               0       2           4   
    Bluetooth localization                          1       1           0   
    CityEngine                                      3       1           2   
    GIS data processing                             3       1           2   
    GNSS localization                               1       2           4   
    Google ARCore                                   0       1           5   
    Google SketchUp 3D design                       1       2           0   
    Image Stitching                                 1       1           4   
    Java Development Kit                            0       1           0   
    SLAM                                            1       2           2   
    Unity 3D                                        8      12          10   
    Unreal Engine                                   1       1           0   
    Vuforia                                         2       7           3

As input for the "networkx.DiGraph.add_weighted_edges_from" function I need to format this in a list of 3-tuples like this:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel


('Head Mounted Display', '2D data extrusion', 3),
('Head Mounted Display', 'Agisoft PhotoScan 3D design', 1),
('Head Mounted Display','AuGeo Esri AR template', 1),
etc...

Furthermore, tuples that have a weight of 0 such as:

('Marker', '2D data extrusion', 0)

need to be removed from the list.

Anyone any idea how to do this?

Thanks in advance!

>Solution :

Use df.columns[0] to get ‘HeadMountedDisplay’ and df.index[i] to get the row names. Note that df refers to your df name.

Then use tupling with a conditional:

tuple((df.columns[0], df.index[i], df[df.columns[0]][i]) for i in range(len(df)) if df[df.columns[0]][i] is not 0)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading