Spec-Zone.ru › pandas 0.19

Параметры и настройки

Обзор

pandas имеет систему параметров, которая позволяет настраивать некоторые аспекты его поведения, при этом параметры отображения — это те, которые пользователь, скорее всего, будет корректировать.

Параметры имеют полное «точечное» имя, регистронезависимое (например, display.max_rows). Вы можете получить/установить параметры напрямую как атрибуты верхнего уровня options атрибута:

In [1]: import pandas as pd

In [2]: pd.options.display.max_rows
Out[2]: 15

In [3]: pd.options.display.max_rows = 999

In [4]: pd.options.display.max_rows
Out[4]: 999

Также существует API, состоящий из 5 соответствующих функций, доступных непосредственно из pandas пространства имен:

  • get_option() / set_option() - получение/установка значения одного параметра.
  • reset_option() - сброс одного или нескольких параметров до их значения по умолчанию.
  • describe_option() - вывести описания одного или нескольких параметров.
  • option_context() - выполнить блок кода с набором параметров, которые вернутся к предыдущим настройкам после выполнения.

Примечание: разработчики могут ознакомиться с pandas/core/config.py для получения дополнительной информации.

Все функции выше принимают шаблон регулярных выражений (стиль re.search) в качестве аргумента, и поэтому передача подстроки будет работать — до тех пор, пока она не будет неоднозначной :

In [5]: pd.get_option("display.max_rows")
Out[5]: 999

In [6]: pd.set_option("display.max_rows",101)

In [7]: pd.get_option("display.max_rows")
Out[7]: 101

In [8]: pd.set_option("max_r",102)

In [9]: pd.get_option("display.max_rows")
Out[9]: 102

Следующее не будет работать, потому что оно соответствует нескольким именам параметров, например, display.max_colwidth, display.max_rows, display.max_columns:

In [10]: try:
   ....:     pd.get_option("column")
   ....: except KeyError as e:
   ....:     print(e)
   ....: 
'Pattern matched multiple keys'

Примечание: использование этого сокращенного формата может привести к тому, что ваш код перестанет работать, если в будущих версиях будут добавлены новые параметры с аналогичными именами.

Вы можете получить список доступных параметров и их описаний с помощью describe_option. При вызове без аргументов describe_option выведет описания всех доступных параметров.

Получение и установка параметров

Как описано выше, get_option() и set_option() доступны из пространства имен pandas. Чтобы изменить параметр, вызовите set_option('option regex', new_value)

In [11]: pd.get_option('mode.sim_interactive')
Out[11]: False

In [12]: pd.set_option('mode.sim_interactive', True)

In [13]: pd.get_option('mode.sim_interactive')
Out[13]: True

Примечание: что параметр «mode.sim_interactive» в основном используется для отладки.

Все параметры также имеют значение по умолчанию, и вы можете использовать reset_option для этого:

In [14]: pd.get_option("display.max_rows")
Out[14]: 60

In [15]: pd.set_option("display.max_rows",999)

In [16]: pd.get_option("display.max_rows")
Out[16]: 999

In [17]: pd.reset_option("display.max_rows")

In [18]: pd.get_option("display.max_rows")
Out[18]: 60

Также возможно сбросить несколько параметров одновременно (используя регулярное выражение):

In [19]: pd.reset_option("^display")
height has been deprecated.

line_width has been deprecated, use display.width instead (currently both are
identical)

option_context контекстный менеджер был экспонирован через верхний API, позволяя вам выполнять код со значениями заданных параметров. Значения параметров автоматически восстанавливаются при выходе из with блока:

In [20]: with pd.option_context("display.max_rows",10,"display.max_columns", 5):
   ....:      print(pd.get_option("display.max_rows"))
   ....:      print(pd.get_option("display.max_columns"))
   ....: 
10
5

In [21]: print(pd.get_option("display.max_rows"))
60

In [22]: print(pd.get_option("display.max_columns"))
20

Установка параметров запуска в среде python/ipython

Использование скриптов запуска для среды python/ipython для импорта pandas и установки параметров делает работу с pandas более эффективной. Для этого создайте скрипт .py или .ipy в папке запуска нужного профиля. Пример, где папка запуска находится в стандартном профиле ipython, можно найти по адресу:

$IPYTHONDIR/profile_default/startup

Дополнительную информацию можно найти в документации ipython. Пример скрипта запуска для pandas показан ниже:

import pandas as pd
pd.set_option('display.max_rows', 999)
pd.set_option('precision', 5)

Часто используемые параметры

Ниже приведён обзор наиболее часто используемых параметров отображения.

display.max_rows и display.max_columns устанавливают максимальное количество строк и столбцов, отображаемых при красивом выводе кадра. Усечённые строки заменяются многоточием.

In [23]: df = pd.DataFrame(np.random.randn(7,2))

In [24]: pd.set_option('max_rows', 7)

In [25]: df
Out[25]: 
          0         1
0  0.469112 -0.282863
1 -1.509059 -1.135632
2  1.212112 -0.173215
3  0.119209 -1.044236
4 -0.861849 -2.104569
5 -0.494929  1.071804
6  0.721555 -0.706771

In [26]: pd.set_option('max_rows', 5)

In [27]: df
Out[27]: 
           0         1
0   0.469112 -0.282863
1  -1.509059 -1.135632
..       ...       ...
5  -0.494929  1.071804
6   0.721555 -0.706771

[7 rows x 2 columns]

In [28]: pd.reset_option('max_rows')

display.expand_frame_repr позволяет кадрам данных отображаться на нескольких страницах, с переходом по строкам или столбцам.

In [29]: df = pd.DataFrame(np.random.randn(5,10))

In [30]: pd.set_option('expand_frame_repr', True)

In [31]: df
Out[31]: 
          0         1         2         3         4         5         6  \
0 -1.039575  0.271860 -0.424972  0.567020  0.276232 -1.087401 -0.673690   
1  0.404705  0.577046 -1.715002 -1.039268 -0.370647 -1.157892 -1.344312   
2  1.643563 -1.469388  0.357021 -0.674600 -1.776904 -0.968914 -1.294524   
3 -0.013960 -0.362543 -0.006154 -0.923061  0.895717  0.805244 -1.206412   
4 -1.170299 -0.226169  0.410835  0.813850  0.132003 -0.827317 -0.076467   

          7         8         9  
0  0.113648 -1.478427  0.524988  
1  0.844885  1.075770 -0.109050  
2  0.413738  0.276662 -0.472035  
3  2.565646  1.431256  1.340309  
4 -1.187678  1.130127 -1.436737  

In [32]: pd.set_option('expand_frame_repr', False)

In [33]: df
Out[33]: 
          0         1         2         3         4         5         6         7         8         9
0 -1.039575  0.271860 -0.424972  0.567020  0.276232 -1.087401 -0.673690  0.113648 -1.478427  0.524988
1  0.404705  0.577046 -1.715002 -1.039268 -0.370647 -1.157892 -1.344312  0.844885  1.075770 -0.109050
2  1.643563 -1.469388  0.357021 -0.674600 -1.776904 -0.968914 -1.294524  0.413738  0.276662 -0.472035
3 -0.013960 -0.362543 -0.006154 -0.923061  0.895717  0.805244 -1.206412  2.565646  1.431256  1.340309
4 -1.170299 -0.226169  0.410835  0.813850  0.132003 -0.827317 -0.076467 -1.187678  1.130127 -1.436737

In [34]: pd.reset_option('expand_frame_repr')

display.large_repr позволяет выбрать, отображать ли фреймы данных, превышающие max_columns или max_rows, как усечённый фрейм или как сводку.

In [35]: df = pd.DataFrame(np.random.randn(10,10))

In [36]: pd.set_option('max_rows', 5)

In [37]: pd.set_option('large_repr', 'truncate')

In [38]: df
Out[38]: 
           0         1         2         3         4         5         6  \
0  -1.413681  1.607920  1.024180  0.569605  0.875906 -2.211372  0.974466   
1   0.545952 -1.219217 -1.226825  0.769804 -1.281247 -0.727707 -0.121306   
..       ...       ...       ...       ...       ...       ...       ...   
8  -2.484478 -0.281461  0.030711  0.109121  1.126203 -0.977349  1.474071   
9  -1.071357  0.441153  2.353925  0.583787  0.221471 -0.744471  0.758527   

           7         8         9  
0  -2.006747 -0.410001 -0.078638  
1  -0.097883  0.695775  0.341734  
..       ...       ...       ...  
8  -0.064034 -1.282782  0.781836  
9   1.729689 -0.964980 -0.845696  

[10 rows x 10 columns]

In [39]: pd.set_option('large_repr', 'info')

In [40]: df
Out[40]: 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 10 columns):
0    10 non-null float64
1    10 non-null float64
2    10 non-null float64
3    10 non-null float64
4    10 non-null float64
5    10 non-null float64
6    10 non-null float64
7    10 non-null float64
8    10 non-null float64
9    10 non-null float64
dtypes: float64(10)
memory usage: 872.0 bytes

In [41]: pd.reset_option('large_repr')

In [42]: pd.reset_option('max_rows')

display.max_colwidth устанавливает максимальную ширину столбцов. Ячейки такой или большей длины будут усечены многоточием.

In [43]: df = pd.DataFrame(np.array([['foo', 'bar', 'bim', 'uncomfortably long string'],
   ....:                             ['horse', 'cow', 'banana', 'apple']]))
   ....: 

In [44]: pd.set_option('max_colwidth',40)

In [45]: df
Out[45]: 
       0    1       2                          3
0    foo  bar     bim  uncomfortably long string
1  horse  cow  banana                      apple

In [46]: pd.set_option('max_colwidth', 6)

In [47]: df
Out[47]: 
       0    1      2      3
0    foo  bar    bim  un...
1  horse  cow  ba...  apple

In [48]: pd.reset_option('max_colwidth')

display.max_info_columns устанавливает порог, при котором будет предоставляться информация по столбцам.

In [49]: df = pd.DataFrame(np.random.randn(10,10))

In [50]: pd.set_option('max_info_columns', 11)

In [51]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 10 columns):
0    10 non-null float64
1    10 non-null float64
2    10 non-null float64
3    10 non-null float64
4    10 non-null float64
5    10 non-null float64
6    10 non-null float64
7    10 non-null float64
8    10 non-null float64
9    10 non-null float64
dtypes: float64(10)
memory usage: 872.0 bytes

In [52]: pd.set_option('max_info_columns', 5)

In [53]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Columns: 10 entries, 0 to 9
dtypes: float64(10)
memory usage: 872.0 bytes

In [54]: pd.reset_option('max_info_columns')

display.max_info_rows: df.info() обычно отображает количество пропущенных значений для каждого столбца. Для больших фреймов это может быть довольно медленным. max_info_rows и max_info_cols ограничивают эту проверку только на фреймах с меньшими размерами, чем указано. Обратите внимание, что вы можете указать параметр df.info(null_counts=True) для переопределения при отображении конкретного фрейма.

In [55]: df  =pd.DataFrame(np.random.choice([0,1,np.nan], size=(10,10)))

In [56]: df
Out[56]: 
     0    1    2    3    4    5    6    7    8    9
0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  NaN  1.0  NaN
1  1.0  NaN  0.0  0.0  1.0  1.0  NaN  1.0  0.0  1.0
2  NaN  NaN  NaN  1.0  1.0  0.0  NaN  0.0  1.0  NaN
3  0.0  1.0  1.0  NaN  0.0  NaN  1.0  NaN  NaN  0.0
4  0.0  1.0  0.0  0.0  1.0  0.0  0.0  NaN  0.0  0.0
5  0.0  NaN  1.0  NaN  NaN  NaN  NaN  0.0  1.0  NaN
6  0.0  1.0  0.0  0.0  NaN  1.0  NaN  NaN  0.0  NaN
7  0.0  NaN  1.0  1.0  NaN  1.0  1.0  1.0  1.0  NaN
8  0.0  0.0  NaN  0.0  NaN  1.0  0.0  0.0  NaN  NaN
9  NaN  NaN  0.0  NaN  NaN  NaN  0.0  1.0  1.0  NaN

In [57]: pd.set_option('max_info_rows', 11)

In [58]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 10 columns):
0    8 non-null float64
1    5 non-null float64
2    8 non-null float64
3    7 non-null float64
4    5 non-null float64
5    7 non-null float64
6    6 non-null float64
7    6 non-null float64
8    8 non-null float64
9    3 non-null float64
dtypes: float64(10)
memory usage: 872.0 bytes

In [59]: pd.set_option('max_info_rows', 5)

In [60]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 10 columns):
0    float64
1    float64
2    float64
3    float64
4    float64
5    float64
6    float64
7    float64
8    float64
9    float64
dtypes: float64(10)
memory usage: 872.0 bytes

In [61]: pd.reset_option('max_info_rows')

display.precision задает точность отображения вывода в десятичных знаках. Это лишь рекомендация.

In [62]: df = pd.DataFrame(np.random.randn(5,5))

In [63]: pd.set_option('precision',7)

In [64]: df
Out[64]: 
           0          1          2          3          4
0 -2.0490276  2.8466122 -1.2080493 -0.4503923  2.4239054
1  0.1211080  0.2669165  0.8438259 -0.2225400  2.0219807
2 -0.7167894 -2.2244851 -1.0611370 -0.2328247  0.4307933
3 -0.6654779  1.8298075 -1.4065093  1.0782481  0.3227741
4  0.2003243  0.8900241  0.1948132  0.3516326  0.4488815

In [65]: pd.set_option('precision',4)

In [66]: df
Out[66]: 
        0       1       2       3       4
0 -2.0490  2.8466 -1.2080 -0.4504  2.4239
1  0.1211  0.2669  0.8438 -0.2225  2.0220
2 -0.7168 -2.2245 -1.0611 -0.2328  0.4308
3 -0.6655  1.8298 -1.4065  1.0782  0.3228
4  0.2003  0.8900  0.1948  0.3516  0.4489

display.chop_threshold задаёт уровень, до которого pandas округляет до нуля при отображении ряда или фрейма данных. Обратите внимание, что это не влияет на точность хранения числа.

In [67]: df = pd.DataFrame(np.random.randn(6,6))

In [68]: pd.set_option('chop_threshold', 0)

In [69]: df
Out[69]: 
        0       1       2       3       4       5
0 -0.1979  0.9657 -1.5229 -0.1166  0.2956 -1.0477
1  1.6406  1.9058  2.7721  0.0888 -1.1442 -0.6334
2  0.9254 -0.0064 -0.8204 -0.6009 -1.0393  0.8248
3 -0.8241 -0.3377 -0.9278 -0.8401  0.2485 -0.1093
4  0.4320 -0.4607  0.3365 -3.2076 -1.5359  0.4098
5 -0.6731 -0.7411 -0.1109 -2.6729  0.8645  0.0609

In [70]: pd.set_option('chop_threshold', .5)

In [71]: df
Out[71]: 
        0       1       2       3       4       5
0  0.0000  0.9657 -1.5229  0.0000  0.0000 -1.0477
1  1.6406  1.9058  2.7721  0.0000 -1.1442 -0.6334
2  0.9254  0.0000 -0.8204 -0.6009 -1.0393  0.8248
3 -0.8241  0.0000 -0.9278 -0.8401  0.0000  0.0000
4  0.0000  0.0000  0.0000 -3.2076 -1.5359  0.0000
5 -0.6731 -0.7411  0.0000 -2.6729  0.8645  0.0000

In [72]: pd.reset_option('chop_threshold')

display.colheader_justify управляет выравниванием заголовков. Доступны варианты «право» и «лево».

In [73]: df = pd.DataFrame(np.array([np.random.randn(6), np.random.randint(1,9,6)*.1, np.zeros(6)]).T,
   ....:                   columns=['A', 'B', 'C'], dtype='float')
   ....: 

In [74]: pd.set_option('colheader_justify', 'right')

In [75]: df
Out[75]: 
        A    B    C
0  0.9331  0.3  0.0
1  0.2888  0.2  0.0
2  1.3250  0.2  0.0
3  0.5892  0.7  0.0
4  0.5314  0.1  0.0
5 -1.1987  0.7  0.0

In [76]: pd.set_option('colheader_justify', 'left')

In [77]: df
Out[77]: 
   A       B    C  
0  0.9331  0.3  0.0
1  0.2888  0.2  0.0
2  1.3250  0.2  0.0
3  0.5892  0.7  0.0
4  0.5314  0.1  0.0
5 -1.1987  0.7  0.0

In [78]: pd.reset_option('colheader_justify')

Доступные параметры

Параметр Значение по умолчанию Функция
display.chop_threshold None Если установлено значение с плавающей точкой, все значения с плавающей точкой, меньшие заданного порога, будут отображаться как точно 0 функциями repr и аналогичными.
display.colheader_justify right Управляет выравниванием заголовков столбцов. Используется DataFrameFormatter.
display.column_space 12 Описание отсутствует.
display.date_dayfirst False Если True, печатает и анализирует даты с днём впереди, например 20/01/2005
display.date_yearfirst False Если True, печатает и анализирует даты с годом впереди, например 2005/01/20
display.encoding UTF-8 По умолчанию используется детекция кодировки консоли. Устанавливает кодировку, используемую для строк, возвращаемых методом to_string; эти строки обычно предназначены для отображения в консоли.
display.expand_frame_repr True Выводить полное представление DataFrame для широких DataFrame на нескольких строках. max_columns всё ещё учитывается, но вывод будет переноситься на несколько «страниц», если его ширина превысит display.width.
display.float_format None Функция должна принимать число с плавающей точкой и возвращать строку с желаемым форматом числа. Используется в некоторых местах, таких как SeriesFormatter. См. core.format.EngFormatter для примера.
display.height 60 Устаревшее. Используйте display.max_rows вместо этого.
display.large_repr truncate Для DataFrame, превышающих max_rows/max_cols, представление (и HTML-представление) может отображать усечённую таблицу (значение по умолчанию с версии 0.13) или переключаться на представление из df.info() (поведение в более ранних версиях pandas). Допустимые значения: [‘truncate’, ‘info’]
display.latex.repr False Создавать ли представление DataFrame в формате LaTeX для jupyter-фронтенов, которые его поддерживают.
display.latex.escape True Экранировать специальные символы в DataFrame при использовании метода to_latex.
display.latex.longtable False Указывает, использует ли метод to_latex DataFrame формат longtable.
display.line_width 80 Устаревшее. Используйте display.width вместо этого.
display.max_columns 20 max_rows и max_columns используются в методах __repr__() для определения, использовать ли to_string() или info(), чтобы отобразить объект в строке. Если python/IPython работает в терминале, это значение можно установить в 0, и pandas будет правильно определять ширину терминала и переключаться на более компактный формат, если все столбцы не помещаются вертикально. IPython notebook, IPython qtconsole или IDLE не работают в терминале, поэтому правильная автоматическая детекция невозможна. Значение ‘None’ означает неограниченное количество.
display.max_colwidth 50 Максимальная ширина столбца в символах в представлении pandas-структуры данных. При переполнении столбца в выводе встраивается маркер «…».
display.max_info_columns 100 max_info_columns используется в методе DataFrame.info для определения, будет ли выводиться информация по каждому столбцу.
display.max_info_rows 1690785 df.info() обычно показывает количество пропущенных значений (null) для каждого столбца. Для больших таблиц это может быть довольно медленным. max_info_rows и max_info_cols ограничивают этот контроль на предмет пропущенных значений только для таблиц с размерами меньше указанных.
display.max_rows 60 Это устанавливает максимальное количество строк, которое pandas должен выводить при выводе различных результатов. Например, это значение определяет, выводит ли repr() DataFrame полностью или только сводное представление. Значение ‘None’ означает неограниченное количество.
display.max_seq_items 100 При красивой печати длинной последовательности печатается не более max_seq_items элементов. Если элементы опущены, они обозначаются добавлением «…» в результирующую строку. Если установлено None, количество печатаемых элементов не ограничено.
display.memory_usage True Указывает, следует ли отображать использование памяти DataFrame при вызове метода df.info().
display.multi_sparse True «Уплотнять» отображение MultiIndex (не отображать повторяющиеся элементы во внешних уровнях в группах).
display.notebook_repr_html True Если True, IPython notebook будет использовать html-представление для объектов pandas (если оно доступно).
display.pprint_nest_depth 3 Управляет количеством вложенных уровней для обработки при красивой печати.
display.precision 6 Точность вывода чисел с плавающей точкой в виде количества знаков после десятичной точки, как для обычного форматирования, так и для экспоненциальной записи. Аналогично опции печати precision numpy.
display.show_dimensions truncate Определяет, следует ли печатать размеры в конце представления DataFrame. Если задано ‘truncate’, выводить размеры только если таблица усечена (т. е. не отображаются все строки и/или столбцы).
display.width 80 Ширина отображения в символах. Если python/IPython работает в терминале, это значение можно установить в None, и pandas будет правильно определять ширину. Обратите внимание, что IPython notebook, IPython qtconsole или IDLE не работают в терминале, поэтому правильная детекция ширины невозможна.
html.border 1 Атрибут border=value вставлен в тег <table> для HTML-представления DataFrame.
io.excel.xls.writer xlwt Двигатель записи по умолчанию для файлов «xls».
io.excel.xlsm.writer openpyxl Двигатель записи по умолчанию для файлов «xlsm». Доступные варианты: ‘openpyxl’ (по умолчанию).
io.excel.xlsx.writer openpyxl Двигатель записи по умолчанию для файлов «xlsx».
io.hdf.default_format None Формат записи по умолчанию, если None, то put будет по умолчанию ‘fixed’, а append — ‘table’.
io.hdf.dropna_table True Удалять ВСЕ строки с NaN при добавлении в таблицу.
mode.chained_assignment warn Вызывать исключение, предупреждение или без действия при попытке использовать цепочку присваиваний. По умолчанию — предупреждение.
mode.sim_interactive False Имитировать интерактивный режим для целей тестирования
mode.use_inf_as_null False True означает, что None, NaN, -INF, INF будут считаться null (старый способ), False означает, что None и NaN — null, но INF, -INF — не null (новый способ).

Форматирование чисел

pandas также позволяет настраивать отображение чисел в консоли. Этот параметр не настраивается через API set_options.

Используйте функцию set_eng_float_format для изменения форматирования чисел с плавающей точкой в объектах pandas, чтобы получить определённый формат.

Например:

In [79]: import numpy as np

In [80]: pd.set_eng_float_format(accuracy=3, use_eng_prefix=True)

In [81]: s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])

In [82]: s/1.e3
Out[82]: 
a   -236.866u
b    846.974u
c   -685.597u
d    609.099u
e   -303.961u
dtype: float64

In [83]: s/1.e6
Out[83]: 
a   -236.866n
b    846.974n
c   -685.597n
d    609.099n
e   -303.961n
dtype: float64

Для округления чисел с плавающей точкой в каждом конкретном случае можно также использовать round() и round().

Форматирование Unicode

Предупреждение

Включение этого параметра повлияет на производительность печати DataFrame и Series (примерно в 2 раза медленнее). Используйте только в случае реальной необходимости.

В некоторых странах Восточной Азии используются символы Unicode, ширина которых соответствует 2 буквам. Если DataFrame или Series содержат эти символы, то стандартный вывод не может быть правильно выровнен.

Примечание

Для каждого вывода прикреплены скриншоты, демонстрирующие фактические результаты.

In [84]: df = pd.DataFrame({u'国籍': ['UK', u'日本'], u'名前': ['Alice', u'しのぶ']})

In [85]: df;
_images/option_unicode01.png

Включение display.unicode.east_asian_width позволяет pandas проверять свойство «Восточноазиатской ширины» каждого символа. Эти символы можно правильно выровнять, проверив это свойство, но это займет больше времени, чем стандартная функция len.

In [86]: pd.set_option('display.unicode.east_asian_width', True)

In [87]: df;
_images/option_unicode02.png

Кроме того, Unicode содержит символы, ширина которых «неопределённая». Ширина этих символов должна быть либо 1, либо 2 в зависимости от настроек терминала или кодировки. Поскольку это невозможно определить из Python, добавлена опция display.unicode.ambiguous_as_wide, чтобы обработать это.

По умолчанию ширина символа «неопределённой» ширины «¡» (обратный знак восклицания) в примере ниже считается равной 1.

In [88]: df = pd.DataFrame({'a': ['xxx', u'¡¡'], 'b': ['yyy', u'¡¡']})

In [89]: df;
_images/option_unicode03.png

Включение display.unicode.ambiguous_as_wide позволяет pandas определить ширину этих символов как 2. Обратите внимание, что эта опция будет эффективна только при включённом display.unicode.east_asian_width. Подтвердите, что начальная позиция изменилась, но выравнивание не выполняется должным образом из-за несоответствия настроек с этой средой.

In [90]: pd.set_option('display.unicode.ambiguous_as_wide', True)

In [91]: df;
_images/option_unicode04.png

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.19.2/options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API