Send pandas dataframe data as html e-mail

29,281

Solution 1

Finally found. This is the way it should be done.

filename = "test.html"
f = file(filename)
attachment = MIMEText(f.read(),'html')
msg.attach(attachment)

Solution 2

Pandas has a function for this.

This will give the the html code for the table, after which you can embed it into an email with:

df = DataFrame(data)

email = " some html {df} lah lah"

email = email.format(df=df.to_html())
Share:
29,281
Nilani Algiriyage
Author by

Nilani Algiriyage

A PhD researcher at Massey, Wellington, New Zealand. Research Interests : Deep Learning, AI

Updated on January 04, 2020

Comments

  • Nilani Algiriyage
    Nilani Algiriyage over 4 years

    I want to send a pandas dataframe data as an HTML e-mail. Based on this post I could create an html with the dataframe. Code

    import pandas as pd
    import numpy as np
    
    HEADER = '''
    <html>
        <head>
    
        </head>
        <body>
    '''
    FOOTER = '''
        </body>
    </html>
    '''
    
    df = pd.DataFrame([[1.1, 1.1, 1.1, 2.6, 2.5, 3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3], list('AAABBBBABCBDDD')]).T
    with open('test.html', 'w') as f:
        f.write(HEADER)
        f.write(df.to_html(classes='df'))
        f.write(FOOTER)
    

    Now I want to send this as a html e-mail. I tried this. Can not figure out how to attach the html file?

  • Dave
    Dave about 8 years
    Wondering if you can provide the full script for this?
  • johan855
    johan855 about 7 years