pandas dataFrame: я бы хотел «унифицировать» значения - PullRequest
0 голосов
/ 05 октября 2018

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

Так что у меня есть "часы", сохраненные в pd.DataFrame, как следует: 1454 1621 и так далее (они 14:54 и 16:21)

проблема: некоторые из них 953 (для 09:53).

вопрос: как я могу «автозаполнить» их так, чтобы они были четырехзначными, содержа нули (я хотел бы, чтобы выше было 0953, а дополнительно 23 было 0023).

Я подумывал о преобразовании числа в строки, проверке, имеют ли они меньше 4-х символов, и добавлении 0 в начале, если нет, но наверняка должен быть более питонический способ сделать это?

Спасибо большоеБольшое спасибо за помощь и хорошего дня!

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Вам понадобится строковый столбец, а затем вы можете использовать zfill:

df = pd.DataFrame([1453, 923, 24, 1250], columns=['time'])
df['time'].astype(str).str.zfill(4)


#0    1453
#1    0923
#2    0024
#3    1250
#Name: time, dtype: object
0 голосов
/ 05 октября 2018

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

df['time'] = pd.to_datetime(df['time'].astype(str).str.zfill(4).apply(lambda x: x[:2] + ':' + x[2:]))
df['time_str'] = df['time'].dt.strftime('%I-%M')
0 голосов
/ 05 октября 2018

Чтобы добавить 0 в начале, тип должен быть строкой.Если имена столбцов hours, начните с

df.hours = df.hours.astype(str)

Теперь вы можете условно добавить 0 к началу более коротких записей:

short = df.hours.str.len() < 4
df.hours.loc[short] = '0' + df.hours.loc[short]

Например:

df = pd.DataFrame({'hours': [123, 3444, 233]})
df.hours = df.hours.astype(str)
short = df.hours.str.len() < 4
df.hours.loc[short] = '0' + df.hours.loc[short]
>>> df
    hours
0   0123
1   3444
2   0233
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...