วิธีการแสดงข้อมูล dataframe แบบเต็ม (ที่ไม่ถูกตัดทอน) เป็น html เมื่อทำการแปลงจาก pandas dataframe เป็น html


213

ฉันแปลง dataframe ของ pandas เป็น html output โดยใช้DataFrame.to_htmlฟังก์ชัน เมื่อฉันบันทึกสิ่งนี้ลงในไฟล์ html แยกต่างหากไฟล์จะแสดงเอาต์พุตที่ถูกตัดทอน

ตัวอย่างเช่นในคอลัมน์ TEXT ของฉัน

df.head(1) จะแสดง

ภาพยนตร์เรื่องนี้เป็นความพยายามที่ยอดเยี่ยม ...

แทน

ภาพยนตร์เรื่องนี้เป็นความพยายามอย่างยอดเยี่ยมในการแยกแยะความเชื่อมั่นทางสังคมที่ซับซ้อนที่เกิดขึ้นในช่วงเวลานี้

การเรนเดอร์นี้ทำได้ดีในกรณีที่เป็นรูปแบบที่เป็นมิตรกับหน้าจอของดาต้าดาต้าขนาดใหญ่ของแพนด้า แต่ฉันต้องการไฟล์ html ที่จะแสดงข้อมูลแบบตารางทั้งหมดที่มีอยู่ในดาต้าเฟรมนั่นคือสิ่งที่จะแสดงองค์ประกอบข้อความหลัง ข้อมูลโค้ดเดิม

ฉันจะสามารถแสดงข้อมูลข้อความที่สมบูรณ์และไม่ถูกตัดทอนสำหรับแต่ละองค์ประกอบในคอลัมน์ TEXT ของฉันในข้อมูลรุ่น html ได้อย่างไร ฉันคิดว่าตาราง html จะต้องแสดงเซลล์ที่ยาวเพื่อแสดงข้อมูลทั้งหมด แต่เท่าที่ฉันเข้าใจมีเพียงพารามิเตอร์กว้างคอลัมน์เท่านั้นที่สามารถส่งผ่านไปยังDataFrame.to_htmlฟังก์ชันได้

คำตอบ:


426

ตั้งค่าdisplay.max_colwidthตัวเลือกเป็น-1:

pd.set_option('display.max_colwidth', -1)

set_option เอกสาร

ตัวอย่างเช่นใน iPython เราเห็นว่าข้อมูลถูกตัดเหลือ 50 ตัวอักษร ส่วนที่เกินนั้นมีรูปไข่:

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณตั้งค่าdisplay.max_colwidthตัวเลือกข้อมูลจะถูกแสดงอย่างสมบูรณ์:

ป้อนคำอธิบายรูปภาพที่นี่


11
ตามเอกสารที่คุณควรตั้งค่าNoneให้หมายถึงไม่ จำกัด
kynan

21
Noneคำตอบที่ถูกต้องคือมันไม่ควรจะกำหนดให้ มิฉะนั้นจะได้รับValueError: Value must have type '<class 'int'>'ข้อผิดพลาด
xpt

นั่นคือสิ่งที่ฉันพูดถึง!
อีวาน

2
max_columnsคำตอบที่ทำงานให้ฉันซึ่งใช้เป็นอาร์กิวเมนต์ที่สองของNone set_option
kilojoules

8
หากคุณต้องการให้ตัวเลือกการแสดงผลเหล่านี้ใช้เพียงครั้งเดียวและไม่ถาวรคุณยังสามารถใช้ตัวจัดการบริบทเช่น:with pd.option_context('display.max_colwidth', -1): display(df)
SA

115
pd.set_option('display.max_columns', None)  

id (อาร์กิวเมนต์ที่สอง) สามารถแสดงคอลัมน์ได้อย่างสมบูรณ์


เล็ก ๆ น้อย ๆ ที่เหลือจำนวนคอลัมน์ถูกตัดให้ฉันตามที่แสดงโดยและจุดไข่ปลา (... ) ใกล้กับกลางโต๊ะของฉัน ขอบคุณ!
four43

4
สิ่งนี้ใช้ได้สำหรับฉันและไม่ใช่คำตอบอื่น ๆ ฉันใช้ Python 3.6
Durga Swaroop

1
สิ่งนี้ไม่ได้ผลสำหรับฉันใน Python 2.7 แต่คำตอบแรกโดย @ behzad.nouri
r3robertson

นี่ควรเป็นคำตอบที่ยอมรับได้ คำตอบที่ยอมรับในปัจจุบันพร้อมตัวเลือกmax_colwidthสามารถแก้ปัญหาการตัดปลายที่เกิดจากเขตข้อมูลมีค่ายาวเกินไป อย่างไรก็ตามฉันคิดว่าปัญหาที่ถูกตัดทอนสำหรับคนส่วนใหญ่จริง ๆ แล้วเป็นคอลัมน์มากเกินไป ดังนั้นmax_columnsควรเป็นที่ยอมรับ
Christopher

@ คริสโตเฟอร์โอพีถามถึงความกว้างของหนึ่งคอลัมน์หลายคนมาที่นี่เพื่อทั้งคู่ดังนั้นคำตอบของคาร์ลจึงมีความเกี่ยวข้องมากกว่าสำหรับพวกเขา
Alexei Martianov

87

ขณะที่pd.set_option('display.max_columns', None)ตั้งค่าจำนวนคอลัมน์สูงสุดที่แสดงตัวเลือกpd.set_option('display.max_colwidth', -1)จะกำหนดความกว้างสูงสุดของแต่ละฟิลด์

เพื่อวัตถุประสงค์ของฉันฉันได้เขียนฟังก์ชันตัวช่วยขนาดเล็กเพื่อพิมพ์เฟรมข้อมูลขนาดใหญ่โดยไม่ส่งผลกระทบต่อส่วนที่เหลือของรหัสมันยังทำการฟอร์แมตตัวเลขลอยและตั้งค่าความกว้างของการแสดงผลเสมือน คุณอาจนำมาใช้สำหรับกรณีการใช้งานของคุณ

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')

เปลี่ยน -1 เป็น "None" ในบรรทัดด้านบน print (x) เพื่อหลีกเลี่ยงคำเตือนการเลิกใช้
Mark Zhukovsky

1

สำหรับผู้ที่ต้องการทำสิ่งนี้ใน dask ฉันไม่สามารถหาตัวเลือกที่คล้ายกันใน dask แต่ถ้าฉันทำเช่นนี้ในสมุดบันทึกเดียวกันสำหรับหมีแพนด้ามันก็ใช้ได้สำหรับ dask ด้วย

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)

0

รหัสต่อไปนี้ส่งผลให้เกิดข้อผิดพลาดด้านล่าง:

pd.set_option('display.max_colwidth', -1)

FutureWarning: การส่งจำนวนเต็มลบจะเลิกใช้ในเวอร์ชัน 1.0 และจะไม่รองรับในเวอร์ชันอนาคต ให้ใช้ None เพื่อไม่จำกัดความกว้างของคอลัมน์

ให้ใช้:

pd.set_option('display.max_colwidth', None)

สิ่งนี้ทำงานได้สำเร็จและสอดคล้องกับเวอร์ชันของแพนด้าต่อไปนี้เวอร์ชัน 1.0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.