.format () в Python с None [duplicate]

Мы можем легко сделать это, используя groupby и count. Но мы должны помнить об использовании функции reset_index ().

df[['col1','col2','col3','col4']].groupby(['col1','col2']).count().\
reset_index()
63
задан Martijn Pieters 18 April 2016 в 15:20
поделиться

2 ответа

Объекты

bytes не имеют собственного метода __format__, поэтому используется значение по умолчанию от object:

>>> bytes.__format__ is object.__format__
True
>>> '{:20}'.format(object())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

Это просто означает, что вы не можете использовать ничего, кроме прямого up, неформатированное неравномерное форматирование на них. Явно конвертируем в строковый объект (как вы это делали, расшифровывая bytes до str), чтобы получить поддержку спецификации формата .

Вы можете сделать преобразование явным с помощью кнопки !s:

>>> '{!s:20s}'.format(b"Hi")
"b'Hi'               "
>>> '{!s:20s}'.format(object())
'<object object at 0x1100b9080>'

object.__format__ явно отклоняет форматированные строки, чтобы избежать неявных преобразований строк, особенно потому, что инструкции форматирования специфичны по типу.

58
ответ дан Martijn Pieters 27 August 2018 в 11:15
поделиться

Это также происходит при попытке форматирования None:

>>> '{:.0f}'.format(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

Это заняло некоторое время для разработки (в моем случае, когда None возвращалась переменной экземпляра)!

22
ответ дан Jeremy Field 27 August 2018 в 11:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: