#python #pandas #jupyter-notebook
#python #pandas #jupyter-записная книжка
Вопрос:
import pandas as pd
>>> d = {'col1': [1, 2], 'col2': [3, 4], ... , 'col20': [5, 6]}
>>> df = pd.DataFrame(data=d)
>>> df
В приведенном выше примере у меня есть горизонтальная прокрутка, но
>>> df.style
нет прокрутки.
Как я могу добавить его для работы с большим количеством столбцов и использовать форматирование стиля?
Обновить
Ответ №1:
Если я вас правильно понял:
pd.set_option('display.max_columns', 500)
Комментарии:
1. Работает для df, но не для >>> df.style
Ответ №2:
IIUC, вам нужно изменить pd.options.display.max_columns
:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,(2,200)))
df
Теперь давайте изменим параметр max_columns
pd.options.display.max_columns=300
df
Вывод:
Комментарии:
1. Работает для df, но не для >>> df.style
2. @DmitryD можете ли вы добавить полный код, включающий ваш вывод в вопрос?
3. добавлен вывод к вопросу
4. Хорошо… какой интерфейс вы используете? Для меня это не похоже на Jupyter notebook. это так?
5. Это хранилище данных, но с ядром Jupyter та же проблема
Ответ №3:
Добавление pd.set_option('display.max_columns', 500)
не работает со стилем pandas.
Вам нужно будет добавить блок css, содержащий overflow: auto
и регулирующий ширину width: 500px
в соответствии с требованиями.
Ниже приведен пример блока кода:
import pandas as pd
import numpy as np
from IPython.display import display, HTML
custom_styling = [
{
"selector": "th",
"props": [
("background", "#00abe7"),
("color", "white"),
("font-family", "tahoma"),
("text-align", "center"),
("font-size", "15px"),
],
},
{
"selector": "td",
"props": [
("font-family", "tahoma"),
("color", "black"),
("text-align", "left"),
("font-size", "15px"),
],
},
{
"selector": "tr:nth-of-type(odd)",
"props": [
("background", "white"),
],
},
{"selector": "tr:nth-of-type(even)", "props": [("background", "#e8e6e6")]},
{"selector": "tr:hover", "props": [("background-color", "#bfeaf9")]},
{"selector": "td:hover", "props": [("background-color", "#7fd5f3")]},
]
df = pd.DataFrame(np.random.randint(0,100,(2,200)))
s1 = df.style
s1.set_table_styles(custom_styling)
s1.hide(axis="index")
# NOTE: Adding div Style with overflow!
display(HTML("<div style='width: 500px; overflow: auto;'>"
s1.to_html()
"</div>"))