Как условно изменить ячейки в панде? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть столбец времени, который имеет тип объекта.

Я хотел бы добавить начальный 0, когда продолжительность времени равна 3.

, поэтому «1200» должно остаться прежним, но «900» должно быть преобразовано в «0900»

Я предполагал сделать что-то вроде:

sample['Time'] = ('0' + sample['Time']) if sample['Time'].str.len() == 3 else sample['Time']

Однако я получаю эту ошибку:

Значение истинности Серии неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете трактовать столбец как str и использовать:

sample['Time'] = sample['Time'].str.zfill(4)

Примечание. Все строки будут содержать не менее 4 символов - с нулевым отступом спереди.Для строк длиннее длины 4 - ничего не будет сделано.

например:

s = pd.Series(['900', '1200', '40', '4', '', float('nan'), '999999'])
r = s.str.zfill(4)

Дает вам r из:

0      0900    # <- prefixed
1      1200    # <- unchanged
2      0040
3      0004
4      0000
5       NaN    # <- nothing happens here
6    999999    # <- string remains 6 characters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...