j in zar
будет сравнивать j
с каждым элементом индекса zar
.
Например,
0 in zar
# True
0 in zar.index
# True
Это также согласуется с поведением фреймов данных, для которых in
по умолчанию выполняет тест членства для столбцов.
df = pd.DataFrame(columns=['a', 'b', 'c'])
'a' in df
# True
'd' in df
# False
Вам понадобится Series.eq
(оператор ==
) или Series.isin
вместе с Series.any
.
(zar == j).any()
Подробности
zar == j
возвращает серию bools:
(zar == j)
0 False
1 False
2 False
3 False
4 False
5 True
6 False
7 False
8 False
9 False
Name: zar, dtype: bool
Затем вызывается any
, который возвращает True, если Любой из рядов верен. Если вы хотите индекс значения True, используйте np.flatnonzero
:
np.flatnonzero(zar == j)
# array([5])
Дайте мне календарь для выбора даты с мышью. И позвольте мне ввести дату с клавиатурой. Примите как можно больше форматов. Если я должен войти 21 декабря 2012, позвольте мне использовать:
Независимо от того, что Вы решаете сделать для решения проблемы локализации, удостоверьтесь, что очевидно, что Вы ожидаете. Дайте мне пример или шаблон с MMDDYYYY
то, что я могу заменить вводом с клавиатуры.
Не давайте мне выпадающие поля, куда я должен прокрутить, особенно в течение многих лет. Если я стар, и я ввожу свой DOB, я не имею достаточно времени в запасе в своей жизни для прокручивания вниз к нижней части выпадающего поля. Выпадающие поля являются хорошим шаблоном для использования, когда я не знаю, каковы опции, но если это - что-то, что я очень знаком с, как моя дата рождения, затем выпадающие меню являются стычкой.
Теперь, исходные данные времени WRT (Большой главный объект неприязни), не предполагайте, что я имел в виду 3:00. Если я ввожу 3 в течение времени, предполагаю, что имел в виду 15:00. Заставьте меня сделать дополнительную работу для планирования чего-то в 3:00. Если Вы чувствуете себя неловко из-за принятия так очень от моего имени, по крайней мере, предупреждаете меня, что я запланировал что-то в течение 3:00, таким образом, я смогу зафиксировать его теперь вместо позже, когда кто-то на моих электронных письмах списка приглашения события и говорит "Вас идиот, Вы запланировали нашу Встречу D&D в течение 3:00!"
Мое предпочтение для ввода текста с кнопкой замещающего знака рядом с ним:
Enter a date [ ] [...]
Замещающий знак открылся бы календарь для заполнения ввода текста, но пользователь может ввести на дате, если они хотят. Проверка должна быть сделана, когда кнопка "OK" для формы нажимается - пытающийся сделать, проверка даты на символе символьным основанием обречена, по моему опыту.
Проверка должна быть сложной и позволить выражения как
"today"
"Tomorrow"
"23 Jan"
и т.д.
Править: В ответ на некоторые комментарии можно было сделать проверку, когда текстовое редактирование теряет фокус (хотя я ненавижу такую вещь), в этом случае, контент редактирования мог измениться от "23 января" до "23-01-2009", чтобы указать, что exprssion был понят.
Я думаю, что запись диапазона дат на Google Calendar довольно хороша. Можно войти клавиатурой или мышью. Единственный каламбур был бы во вводе дат в течение другого года.
Можно сделать это достаточно легко через клавиатуру, но у них должен быть второй набор небольших стрелок на календаре для перехода года во время назад или дальше использование мыши.
Править: В ответ на вопрос, "Что, если Вы хотите запланировать событие, которое идет с 23:00 во вторник до 1:00 в среду (говорят что ежедневная сборка, например)? Как Вы переносите время за полночь?"
Если "ко" времени продвигает его за полночь, то прокрутитесь "для" датирования к следующему дню. Это просто было бы частью бизнес-логики компонента. Вы заметите во втором изображении выше, выпадающее указывает и на время окончания и на продолжительность события, которое должно быть подсказкой.
При попытке положить конец дата ранее, чем дата начала, можно выделить цвет фона полей и/или показать сообщение об ошибке на сохранении.
Игра вокруг на Google Calendar и видит, как это ведет себя.
Я предложил бы, чтобы Вы также допускали пользователей, которым нравится вводить, а не нажимать на календарное управление, таким образом, комбинация текстового поля + раскрывающийся календарь работает хорошо.
Мы создали пользовательский элемент управления только с такой комбинацией. Пользователь может ввести дату во множестве форматов в текстовом поле или нажать на кнопку для появления календаря.
Мы позволяем все виды входа как "сегодня", "женимся", или "+2" (для послезавтра) и используем регулярные выражения для большей части стороны клиента проверки. Мы также делаем серверную проверку, конечно.
Управление также имеет дополнительное текстовое поле в течение времени, которое может быть включено или скрыто свойством. Мы чувствовали, что было легче отделиться, относятся ко времени. В течение многих времен мы позволяем "21:00", "2100", "09:00" и т.д.
Управление обслуживает в течение минуты и макс. даты, так, чтобы дата рождения могла иметь диапазон от, говорят-100 лет текущему году, в то время как истечение кредитной карты могло бы колебаться с текущего года до +5 лет, и таким образом, мы используем блоки проверки допустимости диапазона.
Текстовое поле со ссылкой изображения на всплывающий календарь на стороне является моим выбором. Лучший из обоих миров.
Если Вы хотите что-то дополнительное, Вы могли бы позволить синтаксическому анализатору даты/времени естественного языка как Хронический http://chronic.rubyforge.org/ приправить его.
Также не забывайте международных пользователей.
Если Вы идете для опции поля комбинированного списка/поля списка, удостоверяются, что Вы заставляете месяцы считать "Jan", "февраль"... "Декабрь", а не "1", "2"... "12".
Это - довольно раздражающая необходимость выяснить, какой слот является месяцем и который является днем согласно диапазонам значений.
Я пошел бы для трех альтернатив в зависимости от ситуации:
И я полагаю, что существует больше опций, из которых я выбрал бы.
Необходимо проверить требования UI. Если Вы хотите поддерживающую сценарий поддержку только, они можно пойти с любым из panopoly сценариев и выполнения с любой датой/форматом времени, которую они обеспечивают в скрытое поле.
Однако при необходимости в пользовательской записи в текстовом поле затем Вы сталкиваетесь с некоторыми решениями:
Методы проверки зависят от Ваших решений о требованиях.
Мне нравится плагин средства выбора даты jQuery. Это позволит вывод в определенных форматах.
Календарь, показывающий несколько месяцев непрерывно: http://www.cs.helsinki.fi/u/salaakso/patterns/Calendar-Strip.html
Я всегда находил Google Calendar простым в использовании в этом отношении. Вы могли, конечно, сделать хуже, чем попытка эмулировать его. Ключ должен дать пользователю большую гибкость в том, как они вводят информацию. Например, я могу выбрать время из выпадающего списка или ввести его вручную, и когда я ввожу, я не обязан включать двоеточие или "m" в "пополудни".
Мне действительно нравится способ, которым работает виджет Даты/Времени QT4.
Вот короткое видео (~7.5MB), который показывает, как виджет работает и каковы некоторые его функции: Видео Здесь
Я ожидал бы, что любое сложное приложение будет иметь некоторых или все эти функции.
Способность ввести относительные даты (сегодня, на прошлой неделе, 3 дня назад) удобна, но я не уверен, насколько практичный это было бы, учитывая стандартные вопросы как, "Какова Ваша дата рождения?", или, "Когда хотели бы Вы X отправленный по электронной почте Вам?".