У меня есть фрейм данных, который выглядит так:
df = pd.DataFrame(data=list(range(0,10)),
index=pd.MultiIndex.from_product([[str(list(range(0,1000)))],list(range(0,10))],
names=["ind1","ind2"]),
columns=["col1"])
df['col2']=str(list(range(0,1000)))
К сожалению, отображение приведенного выше фрейма данных выглядит так:
Если я пытаюсь установить: pd.options.display.max_colwidth = 5
, то col2
ведет себя и отображается в одной строке, но ind1
не ведет себя:
Поскольку ind1
является частью мультииндекса, мне все равно, что он занимает несколько строк, но я хотел бы ограничить себя по ширине. Если бы я мог предписать, чтобы каждая строка также занимала высоту не более одной строки, это тоже было бы здорово. Меня не волнует, что отдельные ячейки усекаются при отображении, потому что я предпочитаю меньше прокручивать в любом направлении, чтобы увидеть ячейку.
Я знаю, что могу создать свой собственный HTML-дисплей. Это здорово и все такое, но я думаю, что это слишком сложно для моего варианта использования, когда просто нужны столбцы меньшей ширины для анализа данных в ноутбуках Jupyter. Тем не менее, такое решение может помочь другим подобным вариантам использования, если вы склонны его написать.
То, что я ищу, это какой-то параметр, который, как я думал, это pd.options.display.max_colwidth
, который ограничивает ширину столбца, даже если это индекс. Что-то, что отключило бы перенос длинных текстов, вероятно, также помогло бы с той же проблемой.
Я также пробовал просто печатать без индекса df.style.hide_index()
, в сочетании с pd.options.display.max_colwidth = 5
, но тогда col2
перестает себя вести:
Примерно сейчас у меня закончились идеи. Какие-либо предложения?
Вот один из способов сделать это:
import pandas as pd
df = pd.DataFrame(
data=list(range(0, 10)),
index=pd.MultiIndex.from_product(
[[str(list(range(0, 1000)))], list(range(0, 10))], names=["ind1", "ind2"]
),
columns=["col1"],
)
df["col2"] = str(list(range(0, 1000)))
В следующей ячейке Jupyter запустите:
df.style.set_properties(**{"width": "10"}).set_table_styles(
[{"selector": "th", "props": [("vertical-align", "top")]}]
)
Что выводит: