2016-04-27 16 views
7

मैं the style guide for pandas का पालन कर रहा था और यह बहुत अच्छी तरह से काम किया।pandas to_html?

मैं इन शैलियों को Outlook के माध्यम से to_html कमांड का उपयोग करके कैसे रख सकता हूं? प्रलेखन मेरे लिए थोड़ा कमी लग रहा है।

(df.style 
    .format(percent) 
    .applymap(color_negative_red, subset=['col1', 'col2']) 
    .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'}) 
    .bar(subset=['col4', 'col5'], color='lightblue')) 

import win32com.client as win32 
outlook = win32.Dispatch('outlook.application') 
mail = outlook.CreateItem(0) 
mail.Subject = subject_name 
mail.HTMLbody = ('<html><body><p><body style="font-size:11pt; 
font-family:Calibri">Hello,</p> + '<p>Title of Data</p>' + df.to_html(
      index=False, classes=????????) '</body></html>') 
mail.send 

TO_HTML प्रलेखन से पता चलता है कि वहाँ एक वर्गों को आदेश है कि मैं TO_HTML विधि के अंदर डाल सकते हैं, लेकिन मैं इसे समझ नहीं कर सकते हैं। ऐसा लगता है कि मेरे डेटाफ्रेम में शैली को नहीं रखा गया है जिसे मैंने ऊपर निर्दिष्ट किया है।

अगर मैं कोशिश:

df = (df.style 
     .format(percent) 
     .applymap(color_negative_red, subset=['col1', 'col2']) 
     .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'}) 
     .bar(subset=['col4', 'col5'], color='lightblue')) 

तो df अब एक शैली वस्तु है और आप TO_HTML उपयोग नहीं कर सकते।

संपादित करें - यह वही है जो मैं वर्तमान में अपनी तालिकाओं को संशोधित करने के लिए कर रहा हूं। यह काम करता है, लेकिन मैं पांडा ऑफर की। स्टाइल विधि की शानदार सुविधाओं को नहीं रख सकता।

email_paragraph = """ 
<body style= "font-size:11pt; font-family:Calibri; text-align:left; margin: 0px auto" > 
""" 

email_caption = """ 
<body style= "font-size:10pt; font-family:Century Gothic; text-align:center; margin: 0px auto" > 
""" 


email_style = '''<style type="text/css" media="screen" style="width:100%"> 
    table, th, td {border: 0px solid black; background-color: #eee; padding: 10px;} 
    th {background-color: #C6E2FF; color:black; font-family: Tahoma;font-size : 13; text-align: center;} 
    td {background-color: #fff; padding: 10px; font-family: Calibri; font-size : 12; text-align: center;} 
    </style>''' 
+0

मैंने कल बिना किसी किस्मत के घंटे की कोशिश की। मैं Outlook में डेटाफ्रेम को कस्टमाइज़ करने का तरीका नहीं समझ सकता। यह बदसूरत (बड़ा फ़ॉन्ट) दिखता है। मेरे कंप्यूटर पर डेटाफ्रेम अच्छा दिखता है .. यह हाइलाइट करता है कि मेट्रिक लक्ष्य को पूरा करने में विफल रहा है, इसमें वॉल्यूम दिखाने के लिए बार ग्राफ़ हैं। क्या दृष्टिकोण ईमेल पर प्रदर्शित करने का कोई तरीका नहीं है? – trench

उत्तर

11

बार जब आप अपने श्रृंखलित कार्य करने के लिए style जोड़ने आप एक Styler वस्तु पर काम कर रहे हैं। एक स्ट्रिंग के रूप में HTML प्राप्त करने के लिए उस ऑब्जेक्ट में render विधि है। अपने उदाहरण में तो, आप कुछ इस तरह कर सकता है:

html = (
    df.style 
    .format(percent) 
    .applymap(color_negative_red, subset=['col1', 'col2']) 
    .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri'}) 
    .bar(subset=['col4', 'col5'], color='lightblue') 
    .render() 
) 

तो बजाय अपने ईमेल एक df.to_html() में html शामिल हैं।

+0

यह काम किया और यह बहुत अच्छा लग रहा है, धन्यवाद! – trench

+0

असल में, मैंने अभी देखा है कि बार ग्राफ़ Outlook ईमेल में दिखाई नहीं दे रहे हैं। बाकी सब कुछ ठीक काम कर रहा है। किसी भी विचार को प्रदर्शित करने के लिए इसे कैसे प्राप्त करें? – trench

1

यह एक असाधारण/पायथनिक समाधान नहीं है। मैंने to_html() विधि द्वारा किए गए HTML कोड से पहले सीधी सीएसएस फ़ाइल में लिंक डाला, फिर मैंने पूरी स्ट्रिंग को HTML फ़ाइल के रूप में सहेजा। यह मेरे लिए अच्छा काम किया।

dphtml = r'<link rel="stylesheet" type="text/css" media="screen" href="css-table.css" />' + '\n' 
dphtml += dp.to_html() 

with open('datatable.html','w') as f: 
    f.write(dphtml) 
    f.close() 
    pass 
संबंधित मुद्दे