2015-12-20 21 views
14

के साथ टेक्स्ट को कैसे लपेटें I Jupyter नोटबुक में एक पांडस डेटाफ्रेम देख रहा हूं, और मेरे डेटाफ्रेम में यूआरएल अनुरोध स्ट्रिंग्स हैं जो वर्णों को अलग करने वाले किसी भी व्हाइटस्पेस के बिना सैकड़ों वर्ण लंबे हो सकते हैं।पांडस डेटाफ्रेम: कोई व्हाइटस्पेस

पांडा केवल एक सेल में पाठ रैप करने के लिए जब वहाँ खाली स्थान के है, के रूप में संलग्न चित्र में दिखाया गया लगता है:

enter image description here

अगर कोई खाली स्थान के, स्ट्रिंग एक पंक्ति में प्रदर्शित किया जाता है नहीं है, और यदि पर्याप्त जगह नहीं है तो मेरे विकल्प या तो '...' देखने के लिए हैं या मुझे display.max_colwidth को एक बड़ी संख्या में सेट करना होगा और अब मेरे पास बहुत सी स्क्रॉलिंग के साथ एक हार्ड-टू-रीड टेबल है।

क्या पांडों को पाठ को लपेटने के लिए मजबूर करने का कोई तरीका है, हर 100 वर्ण, कहें कि व्हाईट स्पेस है या नहीं?

+0

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.wrap.html, विशेष रूप से पैरामीटर 'break_long_words' पर एक नज़र डालें। – Shovalt

उत्तर

0

यदि आप पूरी चीज को डेटाफ्रेम में रखने से पहले इसे हल करने में कोई फर्क नहीं पड़ता है, तो आप इसे here वर्णित कर सकते हैं। अपने विशेष मामले में, यदि आप प्रत्येक पंक्ति में 10 वर्ण लंबा होना चाहते हैं, तो आप के लिए होता है:

# Input 
line = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0; GomezAgent 3.0) 
like Gecko' 
n = 10 

# Split 
line = [line[i:i+n] for i in range(0, len(line), n)] 

# The rest is easy 
df = pd.DataFrame(line) 
print(df) 

enter image description here

सफेद रिक्त स्थान के बिना, आप मिल जाएगा:

enter image description here

और वैसे, आखिरी पंक्ति की शुरुआत में सफेद स्थान होता है क्योंकि पंक्तियों को भरने के लिए 10 वर्ण नहीं हैं जैसे पिछली पंक्तियों में है। आप df.style.set_properties(**{'text-align': 'left'}) का उपयोग करके यह उपाय कर सकता है jupyter में:

enter image description here

0

आप डेटा

data['new_column'] = [i[:100] for i in data['old_column']] 
0

के पहले 100 पात्रों के साथ एक नया स्तंभ बना सकते हैं आप सेट कर सकते

import pandas as pd 
pd.set_option('display.max_colwidth', 0) 

और फिर प्रत्येक कॉलम होगा जितना बड़ा होगा कि इसे पूरी तरह से प्रदर्शित करने के लिए होना चाहिए यह सामग्री है। यह कोशिकाओं की सामग्री सामग्री को लपेट नहीं करेगा हालांकि (जब तक वे रिक्त स्थान नहीं रखते)।

0

आप str.wrap विधि का उपयोग कर सकते हैं:

df['user_agent'] = df['user_agent'].str.wrap(100) #to set max line width of 100 
1

आप तदर्थ, Jupyter में अस्थायी प्रदर्शन प्रयोजनों, तो आप बस सम्मिलित कर सकते हैं के लिए केवल इस में हैं, तो खाली स्थान के हर 100 अक्षरों:

chunk_size = 100

डेटा ['new_column'] = ['' .join ([वैल [0 + i: chunk_size + i] मैं श्रेणी में वैल्यू के लिए श्रेणी (0, लेन (स्ट्रिंग), chunk_size)] [' old_column ']

हालांकि ऐसा लगता है कि यह पहली जगह में एक समस्या है क्योंकि एकाधिक सुविधाओं को एक कॉलम में ध्वस्त कर दिया गया है।अपने बड़े डेटासेट को देखे बिना कहना मुश्किल है, लेकिन यदि वे सभी एक ही पैटर्न का पालन करते हैं, तो मैं दृढ़ता से सुझाव देता हूं कि इसे कई विशेषताओं (ब्राउज़र, ब्राउज़र संस्करण, ओएस, ओएस संस्करण, आदि) में विभाजित करना होगा, जो कोई अतिरिक्त काम करेगा इस डेटासेट के साथ आसान है।

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