2017-05-21 9 views
8

में हैं, मैं एक पेंडस डेटाफ्रेम (my_df) प्रदर्शित करने के लिए फ़ंक्शन के साथ एक पायथन मॉड्यूल बना रहा हूं।यह जांचने के लिए कि क्या आप एक जुपीटर नोटबुक

उपयोगकर्ता एक Jupyter नोटबुक में मॉड्यूल का आयात करता है, मैं की तरह कुछ का उपयोग करके वितरित करने के लिए "सुंदर" DataFrame के लिए स्वरूपण चाहेगा:, उपयोगकर्ता एक Jupyter नोटबुक में नहीं है, तो

from IPython.display import display, HTML 
display(my_df) 

मैं

print(my_df) 

मैं अगर कोड एक Jupyter नोटबुक से चलाया जा रहा है कैसे देख सकते हैं: DataFrame के पाठ के रूप में प्रदर्शित करना चाहते हैं? या, मैं कमांडलाइन से टेक्स्ट फॉर्म में डेटाफ्रेम कैसे प्रदर्शित कर सकता हूं, बनाम HTML फॉर्म को प्रदर्शित करता हूं यदि इसे जुपीटर नोटबुक में आयात किया जाता है?

from IPython.display import display, HTML 

def my_func(my_df): 
    if [... code to check for Jupyter notebook here ...]: 
     display(my_df) 
    else: 
     print(my_df) 

उत्तर

6

में देख सकते हैं आप अगर कोड एक नोटबुक से चलाया जा रहा है की जाँच करने के जरूरत नहीं है, display() कमांड लाइन से कॉल करते समय पाठ प्रिंट करता है।

test.py:

from IPython.display import display 
import pandas as pd 

my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]}) 
display(my_df) 

कमांड लाइन से:

$ python test.py 
    bar foo 
0 7 1 
1 8 2 
2 9 3 

एक Jupyter नोटबुक से:

notebook printout

अद्यतन
012,351,यह जांचने के लिए कि क्या आप एक इंटरैक्टिव Ipython shell (कमांड लाइन या ब्राउज़र-आधारित) के अंदर चल रहे हैं, get_ipython देखें। (Ipython डॉक्स से अनुकूलित)

संशोधित test.py:

from IPython.display import display, HTML 
import pandas as pd 
my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]}) 

try: 
    get_ipython 
    display(my_df) 
except: 
    print(my_df) 

यह दृष्टिकोण होगा:
- प्रिंट पाठ जब कमांड लाइन से एक स्क्रिप्ट के रूप में चलाने - एक ब्राउज़र Jupyter नोटबुक
में सुंदर प्रिंट (उदाहरण के लिए python test.py)
- यदि पाइथन शेल में लाइन-बाय-लाइन चलाते हैं, तो यह

+0

एक इंटरैक्टिव पायथन खोल में, यह पूरे खोल को एक जुपीटर नोटबुक शैली सीएलआई में बदल देता है। – mgoldwasser

+0

यह सच है - आपने इंटरैक्टिव पायथन शेल से चलने के बारे में अपनी पोस्ट में कुछ भी उल्लेख नहीं किया है। एक साधारण कमांड लाइन कॉल से यह वांछित के रूप में काम करता है। –

+0

इंटरैक्टिव सीएलआई मुद्दे को संबोधित करने के लिए मेरा अद्यतन उत्तर देखें। –

0

आपको os.en वातावरण में देखना चाहिए।

मेरी मशीन पर आप

os.environ['_'] 
+0

प्रिंट करने के बाद एक इंटरैक्टिव आईपीथॉन खोल में नहीं बदलेगा कुछ गोले _ पर्यावरण v सेट करेंगे आखिरी प्रक्रिया चलाने के लिए आश्वस्त। हालांकि यह काम कर सकता है, यह वास्तव में विश्वसनीय नहीं है और मुझे संदेह है कि इसके आधार पर बेहतर जवाब है। –

संबंधित मुद्दे