Если вы пришли сюда, чтобы выбрать строки из фрейма данных, включив те, чье значение столбца НЕ является ни одним из списка значений, вот как перевернуть ответ unutbu для списка значений выше:
df.loc[~df['column_name'].isin(some_values)]
(Чтобы не включать одно значение, конечно, вы просто используете обычный оператор не равно, !=
.)
Пример:
import pandas as pd
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split()})
print(df)
дает нам
A B
0 foo one
1 bar one
2 foo two
3 bar three
4 foo two
5 bar two
6 foo one
7 foo three
Подмножество только для тех строк, которые ARE NOT one
или three
в столбце B
:
df.loc[~df['B'].isin(['one', 'three'])]
дает
A B
2 foo two
4 foo two
5 bar two
Эти Convert.ToXXX()
методы для объектов, которые могли бы иметь корректный или подобный тип, в то время как .Parse()
и .TryParse()
специально для строк:
//o is actually a boxed int
object o = 12345;
//unboxes it
int castVal = (int) 12345;
//o is a boxed enum
object o = MyEnum.ValueA;
//this will get the underlying int of ValueA
int convVal = Convert.ToInt32( o );
//now we have a string
string s = "12345";
//this will throw an exception if s can't be parsed
int parseVal = int.Parse( s );
//alternatively:
int tryVal;
if( int.TryParse( s, out tryVal ) ) {
//do something with tryVal
}
, Если Вы компилируете с флагами оптимизации TryParse, очень быстро - это - лучший способ получить число от строки. Однако, если у Вас есть объект, который мог бы быть интервалом или мог бы быть строкой, Преобразовывают. ToInt32 более быстр.
Вот ответ для Вас:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428
, Хотя я думаю в современных версиях.NET, лучшая вещь сделать использовать TryParse в любом случае, если существует сомнение, что преобразование будет работать.
Существует также метод DirectCast, который необходимо использовать, только если Вы уверены, каков тип объекта. Это быстрее, но не делает никаких надлежащих проверок. Я использую DirectCast, когда я извлекаю значения из свободно введенного DataTable, когда я знаю тип для каждого столбца.
Я - большой поклонник TryParse, так как он сохраняет Вас много головной боли с обнаружением ошибки, когда существует шанс значение, которое Вы собираетесь проанализировать, не имеет соответствующего типа.
Мой порядок обычно:
Если Вам нужна скорость, я вполне уверен, прямой бросок является самым быстрым путем. Однако я обычно использую.Parse или.TryParse, потому что, кажется, делает вещи легче читать, и вести себя более предсказуемым способом.
Преобразовывают на самом деле Синтаксический анализ вызовов под капотом, я верю. Таким образом, существует мало различия там, и его действительно просто, кажется, вопрос персонального вкуса.