นุ่น: การตั้งค่าไม่ จำนวนแถวสูงสุด


148

ฉันมีปัญหาในการดูรายการต่อไปนี้DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

ปัญหาคือมันไม่ได้พิมพ์ทุกแถวต่อค่าเริ่มต้นในโน้ตบุ๊ก ipython แต่ฉันต้องแบ่งเพื่อดูแถวที่เป็นผลลัพธ์ แม้แต่ตัวเลือกต่อไปนี้ก็ไม่เปลี่ยนผลลัพธ์:

pd.set_option('display.max_rows', 500)

ไม่มีใครรู้วิธีแสดงอาร์เรย์ทั้งหมด?


เมื่อฉันรันโค้ดของคุณเป็นค่าเริ่มต้น (เช่นไม่มีโปรไฟล์การกำหนดค่าพิเศษ) ฉันจะได้ตารางที่พิมพ์ออกมาสวย ๆ ซึ่งเลื่อนได้พร้อมค่าทั้งหมด FYI แพนด้าของฉัน __ version__ = 0.9.1 (ไม่แน่ใจว่าเรื่องนี้หรือไม่)
BubbleGuppies

ฉันหมายถึงเชลล์ปกติไม่ใช่ ipython
Ryan Saxe

ฉันรู้สึกว่านี่อาจเป็นข้อผิดพลาดใน 0.11 + ...
Andy Hayden

สวัสดีแอนดี้ Wes ได้รับการยืนยันแล้วหรือยัง? ฉันจะยื่นข้อบกพร่องนี้ได้ที่ไหน? มีวิธีแก้ปัญหาหรือไม่?
Andy

ฉันเพิ่งยื่นที่นี่ฉันรู้ว่ามีการเปลี่ยนแปลงใน 0.11 ในนาทีสุดท้ายของ DataFrame repr ดังนั้นฉันจึงคัดลอกสิ่งเหล่านั้นในรายงานข้อบกพร่อง จะแจ้งให้คุณทราบวิธีแก้ปัญหาใหม่
Andy Hayden

คำตอบ:


257

ชุดdisplay.max_rows:

pd.set_option('display.max_rows', 500)

สำหรับรุ่นเก่าของหมีแพนด้า (<= 0.11.0) คุณจะต้องเปลี่ยนทั้งสองและdisplay.heightdisplay.max_rows

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

pd.describe_option('display')ดูเพิ่มเติม

คุณสามารถตั้งค่าตัวเลือกชั่วคราวได้เพียงครั้งเดียวดังนี้:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

คุณยังสามารถรีเซ็ตตัวเลือกกลับไปเป็นค่าเริ่มต้นได้เช่นนี้:

pd.reset_option('display.max_rows')

และรีเซ็ตทั้งหมดกลับ:

pd.reset_option('all')


7
+1 สำหรับ pd.describe_option ('display') ฉันไม่รู้จักตัวเลือกทั้งหมด
nom-mon-ir

41
ตอนนี้ความสูงเลิกใช้แล้วดังนั้นตัวเลือก display.max_rows ก็เพียงพอแล้ว
hanleyhansen

10
สำหรับใครก็ตามที่ดูเฉพาะคำตอบที่ยอมรับ: ใช้with pd.option_context('display.height', 500, 'display.max_rows', 500):เพื่อตั้งค่าเหล่านี้ชั่วคราวเท่านั้น
BallpointBen

ฉันควรแก้ไขหรือให้วิธีที่ดีที่สุดเพื่อให้บรรลุเป้าหมายนี้ ใช้ไม่มีและไม่ จำกัด ที่ 500 # ชั่วคราวแสดงแถวและคอลัมน์ทั้งหมดด้วย pd.option_context ('display.max_rows', ไม่มี, 'display.max_columns', ไม่มี): display (df_facilities) โค้ดด้านบนจะมีผลเฉพาะ ในเซลล์ที่มีรหัสจึงไม่จำเป็นต้องรีเซ็ตในเซลล์อื่น
MGB.py

37

โดยส่วนตัวแล้วฉันชอบการตั้งค่าตัวเลือกโดยตรงด้วยคำสั่งมอบหมายเนื่องจากหาได้ง่ายผ่านการเติมแท็บด้วย iPython ฉันพบว่ามันยากที่จะจำชื่อตัวเลือกที่แน่นอนดังนั้นวิธีนี้จึงเหมาะกับฉัน

ตัวอย่างเช่นสิ่งที่ฉันต้องจำก็คือมันเริ่มต้นด้วย pd.options

pd.options.<TAB>

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

ตัวเลือกส่วนใหญ่มีอยู่ภายใต้ display

pd.options.display.<TAB>

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

จากที่นี่ฉันมักจะแสดงผลว่าค่าปัจจุบันเป็นอย่างไร:

pd.options.display.max_rows
60

จากนั้นฉันตั้งค่าเป็นสิ่งที่ฉันต้องการให้เป็น:

pd.options.display.max_rows = 100

นอกจากนี้คุณควรทราบตัวจัดการบริบทสำหรับตัวเลือกซึ่งตั้งค่าตัวเลือกชั่วคราวภายในบล็อกโค้ด ส่งชื่อตัวเลือกเป็นสตริงตามด้วยค่าที่คุณต้องการให้เป็น คุณสามารถส่งผ่านตัวเลือกต่างๆในบรรทัดเดียวกัน:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

คุณยังสามารถรีเซ็ตตัวเลือกกลับไปเป็นค่าเริ่มต้นได้เช่นนี้:

pd.reset_option('display.max_rows')

และรีเซ็ตทั้งหมดกลับ:

pd.reset_option('all')

การตั้งค่าตัวเลือกผ่านทางpd.set_option. ฉันเพียงแค่หาโดยใช้แอตทริบิวต์โดยตรงเป็นเรื่องง่ายและมีความจำเป็นน้อยลงและget_optionset_option


4
with pd.option_contextเป็นวิธีการที่สะอาดที่สุดในบรรดาคำตอบเหล่านี้ ผลข้างเคียงน้อยที่สุด
ijoseph


11

มีการระบุไว้แล้วในความคิดเห็นนี้และในคำตอบนี้แต่ฉันจะพยายามให้คำตอบที่ตรงกว่าสำหรับคำถาม:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_contextพร้อมใช้งานตั้งแต่แพนด้า 0.13.1 ( บันทึกย่อประจำรุ่นของแพนด้า 0.13.1 ) ตามนี้ ,

[มัน] อนุญาตให้คุณดำเนินการบล็อกโค้ดด้วยชุดตัวเลือกที่เปลี่ยนกลับไปใช้การตั้งค่าก่อนหน้านี้เมื่อคุณออกจากบล็อกด้วย


9

ตามที่ @hanleyhansen ระบุไว้ในความคิดเห็นในเวอร์ชัน 0.18.1 display.heightตัวเลือกนี้เลิกใช้งานแล้วและระบุว่า "ใช้display.max_rowsแทน" ดังนั้นคุณต้องกำหนดค่าดังนี้:

pd.set_option('display.max_rows', 500)

ดูบันทึกประจำรุ่น - เอกสาร pandas 0.18.1 :

display.height ที่เลิกใช้แล้วตอนนี้ display.width เป็นเพียงตัวเลือกการจัดรูปแบบไม่ได้ควบคุมการเรียกใช้ข้อมูลสรุปคล้ายกับ <0.11.0


3

ในคำตอบสำหรับคำถามที่คล้ายกันนี้คุณไม่จำเป็นต้องแฮ็กการตั้งค่า เขียนง่ายกว่ามาก:

print(foo.to_string())

1
คุณไม่ควรแปลงเป็นสตริง ไม่ใช่สิ่งที่แอนดี้ขอ
simtim

1
@simtim Andy ถามว่าจะ "แสดงอาร์เรย์ทั้งหมด" ได้อย่างไร นี้จะทำและเป็นมากง่ายกว่าคำตอบที่ได้รับการยอมรับ
Ninjakannon

0

เพื่อตั้งค่าไม่ จำกัด จำนวนแถวใช้

ไม่มี

กล่าวคือ

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

ตอนนี้สมุดบันทึกจะแสดงแถวทั้งหมดในชุดข้อมูลทั้งหมดภายในสมุดบันทึก;)

ในทำนองเดียวกันคุณสามารถตั้งค่าให้แสดงคอลัมน์ทั้งหมดเป็น

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

ตอนนี้ถ้าคุณใช้เรียกใช้เซลล์ที่มีเฉพาะ dataframe โดยไม่มีแท็ก head หรือ tail เป็น

df

จากนั้นจะแสดงแถวและคอลัมน์ทั้งหมดใน dataframe df

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