Pandalar: Ayar no. maksimum satır sayısı


138

Aşağıdakileri görüntülerken sorun yaşıyorum DataFrame:

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

Sorun, ipython not defterinde varsayılan olarak tüm satırları yazdırmamasıdır, ancak ortaya çıkan satırları görüntülemek için dilim yapmak zorundayım. Aşağıdaki seçenek bile çıktıyı değiştirmez:

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

Herkes dizinin nasıl görüntüleneceğini biliyor mu?


Kodunuzu varsayılan (özel yapılandırma profili yok) bir defterde çalıştırdığımda, tüm değerlerle kaydırılabilir oldukça yazdırılmış bir tablo alıyorum. FYI, pandalarım .. version__ = 0.9.1 (bunun önemli olup olmadığından emin değilim)
BubbleGuppies

Ipython değil normal kabuk demek istedim
Ryan Saxe

Bu 0.11 + 'da bir hata olabilir hissediyorum ...
Andy Hayden

Merhaba Andy. Bu Wes tarafından zaten doğrulandı mı? Bu hatayı nereye gönderebilirim? Bir çözüm var mı?
Andy

Ben sadece burada dosyaladım , ben DataFrame repr 0.11 bazı son dakika değişiklikleri olduğunu biliyorum, bu yüzden hata rapor olanlar cc'd. Geçici çözümü size bildirir.
Andy Hayden

Yanıtlar:


233

Set display.max_rows:

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

Pandalar eski sürümleri için (<= 0.11.0) Her iki değiştirmeniz gerekir display.heightve display.max_rows.

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

Ayrıca bakınız pd.describe_option('display').

Bir seçenek için yalnızca geçici olarak aşağıdaki gibi bir seçenek belirleyebilirsiniz :

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

Ayrıca bir seçeneği aşağıdaki gibi varsayılan değerine sıfırlayabilirsiniz:

pd.reset_option('display.max_rows')

Ve hepsini sıfırlayın:

pd.reset_option('all')


6
Pd.describe_option ('display') için +1, tüm seçenekleri bilmiyordum
nom-mon-ir

41
Yükseklik artık kullanımdan kaldırılmıştır, bu nedenle display.max_rows seçeneği yeterlidir.
hanleyhansen

9
Sadece kabul edilen cevaba bakan herkes için: with pd.option_context('display.height', 500, 'display.max_rows', 500):sadece geçici olarak ayarlamak için kullanın .
BallpointBen

Bunu başarmak için düzeltmeli ya da en iyi yolu vermeliyim. Yok seçeneğini kullanın ve 500 ile sınırlamayın. # Geçici tüm satırları ve sütunları pd.option_context ('display.max_rows', None, 'display.max_columns', None) ile görüntüleme: display (df_facilities) Yukarıdaki kod yalnızca etkili olur diğer hücrelerde sıfırlamaya gerek olmadığı için kodu içeren hücrede.
MGB.py

35

Şahsen, iPython sayesinde sekme tamamlama yoluyla bulmak kolay olduğu için seçenekleri doğrudan bir atama ifadesiyle ayarlamayı seviyorum. Tam seçenek isimlerinin ne olduğunu hatırlamakta zorlanıyorum, bu yüzden bu yöntem benim için çalışıyor.

Mesela hatırlamam gereken tek şey bunun pd.options

pd.options.<TAB>

resim açıklamasını buraya girin

Seçeneklerin çoğu, display

pd.options.display.<TAB>

resim açıklamasını buraya girin

Buradan, genellikle geçerli değerin nasıl olduğunu çıktı:

pd.options.display.max_rows
60

Daha sonra olmasını istediğim şeye ayarladım:

pd.options.display.max_rows = 100

Ayrıca, seçenekler için bir kod bloğunun içindeki seçenekleri geçici olarak ayarlayan seçenekler için bağlam yöneticisinin farkında olmalısınız. Seçenek adını bir dize olarak ve ardından olmasını istediğiniz değeri girin. Aynı satırda istediğiniz sayıda seçeneği iletebilirsiniz:

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

Ayrıca bir seçeneği aşağıdaki gibi varsayılan değerine sıfırlayabilirsiniz:

pd.reset_option('display.max_rows')

Ve hepsini sıfırlayın:

pd.reset_option('all')

Seçenekleri ayarlamak hala mükemmel pd.set_option. Sadece doğrudan daha kolaydır ve daha az ihtiyaç vardır özellikleri kullanarak bulmak get_optionve set_option.


4
with pd.option_contextbu cevaplar arasında en temiz yöntemdir; en az yan etki.
ijoseph

10

Bu yorumda ve bu cevapta zaten işaret edildi , ancak soruya daha doğrudan bir cevap vermeye çalışacağım:

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 pandalar 0.13.1'den beri mevcuttur ( pandalar 0.13.1 sürüm notları ). Göre bu ,

bloğundan çıktığınızda önceki ayarlara geri dönen bir dizi seçenekle bir kod bloğu yürütmenize izin verir.


9

@Hanleyhansen'in bir yorumda belirttiği gibi, 0.18.1 sürümünden itibaren display.heightseçenek kullanımdan kaldırılmıştır ve " display.max_rowsbunun yerine kullan" der . Bu yüzden bunu şu şekilde yapılandırmanız gerekir:

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

Bkz Sürüm Notları - 0.18.1 belgelerine pandalar :

Kullanımdan kaldırılmış display.height, display.width artık yalnızca bir biçimlendirme seçeneği <0.11.0'a benzer şekilde özetin tetiklenmesini denetlemiyor.


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

Çalışmaz Jupyter içinde!
Bunun yerine kullanın:

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

3

Benzer bir sorunun bu cevabında olduğu gibi, ayarları hacklemeye gerek yoktur. Yazmak çok daha kolay:

print(foo.to_string())

1
Dizeye dönüştürmemelisiniz. Andy'nin istediği bu değildi.
simtim

1
@simtim Andy "tüm diziyi nasıl görüntüleyeceğini" sordu. Bu bunu yapar ve kabul edilen cevaptan çok daha basittir.
Ninjakannon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.