Во-первых, канонический способ сделать то, что вы делаете, это:
fail = data[data['Result']==0]
passed = data[data['Result']==1]
Это сокращение от
fail = data.loc[data['Result']==0, :]
passed = data.loc[data['Result']==1, :]
loc
для нарезки по меткам, в то время как iloc
предназначен для нарезки по индексу (ie, если вы знаете, какие номера строк / столбцов вы хотите).
Различие между одинарными и двойными скобками заключается в следующем: если вы возвращаете более одного столбца, Pandas по необходимости вернет кадр данных. Если ваш запрос возвращает один столбец, Pandas по умолчанию возвращает серию. Если вы используете двойные скобки, это даст вам фрейм данных формы (num_rows, 1)
. В вашем случае это не имеет значения, поскольку вы возвращаете несколько столбцов.
Наконец, если вы используете Pandas ранее, чем версия 1.0.0
, вам следует использовать копии фреймов данных:
fail = data[data['Result']==0].copy()
passed = data[data['Result']==1].copy()
Это предотвращает пресловутый SettingWithCopyWarning
, если вы позже внесете изменения.