2017-03-29 25 views
6

में कॉलम नाम लपेटना मेरे डेटा फ्रेम में मेरे कुछ कॉलम के लिए मेरे पास लंबे शीर्षक हैं, और मुझे टेक्स्ट को लपेटने की क्षमता चाहिए। मुझे पता है कि इस कार्यक्षमता पांडा में बनाया गया है, मुझे क्या करना है:पायथन पांडस डेटाफ्रेम या जुपीटर नोटबुक

pd.DataFrame(np.random.randn(2, 10), 
    columns=['Very Long Column Title ' + str(i) for i in range(10)]) 

DataFrame with wrapped column names

लेकिन अगर मैं कम कॉलम हैं, शीर्षक लपेट नहीं होगा:

pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long Column Title ' + str(i) for i in range(2)]) 

DataFrame does not wrap column names

मैंने मैन्युअल रूप से एक नई लाइन डालने का भी प्रयास किया है:

import pandas as pd  
pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long \n Column Title ' + str(i) for i in range(2)]) 

लेकिन यह उपरोक्त के समान उत्पादन देता है।

मैं इस विषय पर जवाब के लिए इसी तरह की मिल गया है:

मैं एक जुपीटर नोटबुक में काम कर रहा हूं, लेकिन एक पांडा-बा पसंद करूंगा यदि संभव हो तो sed समाधान।

उत्तर

3

यहाँ एक जवाब है कि IPython गुणों को बदलने को शामिल नहीं करता है:

df = pd.DataFrame(np.random.randn(10, 2), 
    columns=['Very Long Column Title ' + str(i) for i in range(2)]) 
df.style.set_table_styles([dict(selector="th",props=[('max-width', '50px')])]) 
+1

धन्यवाद! एक मूल पांडा परिणाम, जो मैंने आशा की थी। – Rachel

5

जुपीटर नोटबुक कई स्रोतों से उनके प्रदर्शन गुणों का उत्तराधिकारी प्राप्त करता है। pandas में कोई संपत्ति नहीं है जो कॉलम हेडर की चौड़ाई को प्रतिबंधित करता है क्योंकि pandas पाठ को लपेटने का कारण नहीं है, यह वास्तव में प्रस्तुत HTML है।

आप का उपयोग कर तालिका हेडर की अधिकतम चौड़ाई प्रतिबंधित करने के लिए डिफ़ॉल्ट Jupyter नोटबुक शैलियों के ऊपर लिख सकते हैं:

from IPython.core.display import HTML 
HTML("<style>.rendered_html th {max-width: 120px;}</style>") 

भागो एचटीएमएल तालिका हेडर की अधिकतम स्तंभ चौड़ाई सेट करने के लिए अपनी नोटबुक के शीर्ष पर इस कोड को एक बार 120 पिक्सल तक।

+0

बिल्कुल सही! मुझे पता था कि यह कहीं एक सेटिंग होना था, लेकिन यह पता नहीं लगा सका। – Rachel

0

आप के साथ स्तंभ शीर्षकों में रिक्त स्थान डालने से सही व्यवहार "में हैक" कर सकते हैं:

def colfix(df, L=5): return df.rename(columns=lambda x: ' '.join(x.replace('_', ' ')[i:i+L] for i in range(0,len(x),L)) if df[x].dtype in ['float64','int64'] else x) 

colfix(your_df) 

देखें मेरी एक समान प्रश्न का उत्तर https://stackoverflow.com/a/45078833/6903458

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