Я считаю, что синтаксис предыдущих ответов является избыточным и трудно запоминаемым. Пандас представил метод query()
в v0.13, и я предпочитаю его. Для вашего вопроса вы можете сделать df.query('col == val')
Воспроизводится из http://pandas.pydata.org/pandas-docs/version/0.17.0/indexing.html#indexing-query
In [167]: n = 10
In [168]: df = pd.DataFrame(np.random.rand(n, 3), columns=list('abc'))
In [169]: df
Out[169]:
a b c
0 0.687704 0.582314 0.281645
1 0.250846 0.610021 0.420121
2 0.624328 0.401816 0.932146
3 0.011763 0.022921 0.244186
4 0.590198 0.325680 0.890392
5 0.598892 0.296424 0.007312
6 0.634625 0.803069 0.123872
7 0.924168 0.325076 0.303746
8 0.116822 0.364564 0.454607
9 0.986142 0.751953 0.561512
# pure python
In [170]: df[(df.a < df.b) & (df.b < df.c)]
Out[170]:
a b c
3 0.011763 0.022921 0.244186
8 0.116822 0.364564 0.454607
# query
In [171]: df.query('(a < b) & (b < c)')
Out[171]:
a b c
3 0.011763 0.022921 0.244186
8 0.116822 0.364564 0.454607
Вы также можете получить доступ к переменным в среде, добавив @
.
exclude = ('red', 'orange')
df.query('color not in @exclude')
При выборе метода шифрования для системы входа в систему затем, скорость не является другом, у Jeff был to-frow с Thomas Ptacek о паролях и , заключение состояло в том, что необходимо использовать самое медленное, большая часть метода надежного шифрования, которому можно предоставить.
Из блога Thomas Ptacek:
Скорость точно, что Вы don’t хотят в функции хэша пароля.современные схемы пароля подвергаются нападению с возрастающими взломщиками пароля.
Возрастающие взломщики don’t предварительно вычисляют все возможные взломанные пароли. Они рассматривают каждый хэш пароля индивидуально, и они подают свой словарь через функцию хэша пароля тем же путем, Ваша страница входа в систему PHP была бы. Взломщики таблицы Rainbow как Ophcrack используют пространство для нападения на пароли; возрастающие взломщики как John Превосходный человек, Трещина и LC5 работают со временем: статистические данные и вычисляют.
игра нападения пароля выиграна вовремя взятая для взламывания пароля X. С таблицами радуги то время зависит от того, насколько большой Ваша таблица должна быть и как быстро можно искать ее. С возрастающими взломщиками время зависит от того, как быстро можно сделать функцию хэша пароля выполненной.
, Чем лучше можно оптимизировать функцию хэша пароля, тем быстрее функция хэша пароля добирается, более слабое, которое схема. MD5 и SHA1, даже стандартные блочные шифры как DES, разработаны, чтобы быть быстрыми. MD5, SHA1 и DES являются хешами слабого пароля. На современных центральных процессорах сырые данные crypto стандартные блоки как DES и MD5 могут быть bitsliced, векторизованным и параллелизированным для создания молнии поисков пароля быстро. Игра закончена реализации FPGA стоят только сотен долларов.
Я с Peter. Разработчик, кажется, не понимает паролей. Все мы выбираем (и я виновен в этом также), MD5 или SHA1, потому что они быстры. Размышление об этом ('cuz кто-то недавно указал на это мне), который не имеет никакого смысла. Мы должны выбирать алгоритм хеширования, это глупо медленный. Я имею в виду в масштабе вещей, оживленный сайт хеширует пароли что? каждая 1/2 минута? Кто заботится, требуется ли 0,8 секунды по сравнению с мудрым сервером 0,03 секунд? Но что дополнительное замедление огромно для предотвращения всех типов общих грубых-forcish нападений.
От моего чтения, bcrypt специально предназначен для хеширования безопасного пароля. Это основано на шифре, и существуют многие реализация.
Для PHP, PHPPass http://www.openwall.com/phpass/
выезда Для любого делающего.NET, BCrypt.NET выезда http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx
Нужно указать, что Вы не хотите к , шифруют пароль, Вы хотите к [1 112] хеш это.
Зашифрованные пароли могут быть дешифрованы, позволив кому-то видеть пароль. Хеширование является односторонней операцией, таким образом, старый пароль пользователя (криптографически) уводят.
<час>, Что касается которого алгоритма необходимо выбрать - используют в настоящее время принимаемый стандартный:
И когда Вы хешируете пароль пользователя, убедиться также хешировать в некотором другом спаме с ним. например:
password1
PasswordSaltDesignedForThisQuestion
Добавляют соль к паролю пользователя:
String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Независимо от того, что Вы делаете, не пишите свой собственный алгоритм шифрования. Выполнение этого почти гарантирует (если Вы не будете шифровальщиком), что будет дефект в алгоритме, который сделает это тривиальным для взламывания.
Я не обязательно ищу самое быстрое, но хороший баланс, часть сервера, для которого разрабатывается этот код, является довольно медленной, сценарий, который хеширует и хранит пароль, занимает 5-6 секунд для выполнения, и я сузил его к хешированию (если я комментирую долго обсуждение, он работает через 1-2 секунды).
Это не должно быть самым безопасным, я не ввожу в заблуждение для банка (прямо сейчас), но я, конечно НЕ БУДУ хранить пароли как простой текст.
Используйте эту функцию при вставке в базу данных Password_harsh ($password, PASSWORD_DEFAULT); И при выборе из базы данных Вы сравниваете пароль, который Вы вставляете с тем в базу данных с помощью функции, если (password_verify ($password, $databasePassword)) {
}else{
echo "password not correct";
}
Это будет резкий пароль в безопасном формате