Да, вы можете использовать .loc и условие, чтобы нарезать df, а затем вернуть индекс, используя .iloc.
import pandas as pd
df = pd.DataFrame({'time':pd.date_range(start='2018-01-01 00:00:00',end='2018-12-31 00:00:00', freq='H')}, index=None).reset_index(drop=True)
# then use conditions and .iloc to get the first instance
df.loc[df['time']>'2018-10-30 01:00:00'].iloc[[0,]].index[0]
# if you specify a coarser condition, for instance without time,
# it will also return the first instance
df.loc[df['time']>'2018-10-30'].iloc[[0,]].index[0]
“конвертируемый к bool” просто означает что-либо, что может значительно использоваться в булевом контексте (например, в if
условие). Это имеет смысл в неявных преобразованиях. Вообразите объект, который Вы хотите использовать в булевом контексте, например. std::fstream
:
ifstream ifs("filename");
while (ifs >> token)
cout "token " << token << " read." << endl;
Здесь, ifs
конвертируемо к булевской переменной. Ну, на самом деле это не. Скорее это конвертируемо к чему-то, что, в свою очередь, конвертируемо к bool
. Это должно предотвратить такие операторы:
int b = ifs;
Обоснование состоит в том, что такой оператор по всей вероятности не предназначается, и компилятор должен поэтому предотвратить его. Путем возврата “кабриолета bool”, а не a bool
, это достигается, потому что два пользовательских неявных преобразования не могут быть объединены в цепочку в одном выражении.
В этом контексте Вы могли бы хотеть искать безопасную bool идиому. Chris уже сослался на одну возможную реализацию, с помощью void*
как тип возврата. Обычно, this
указатель затем используется для представления true
. Это - то, что привыкает STL. Однако это, к сожалению, все еще испорчено. Несколько альтернатив были предложены (аккуратно обернутый в статье, которую я связал выше), и насколько я знаю, были также включены в C++ 0x для рассмотрения. Я не знаю о текущем статусе этих предложений, все же.
bool
s promotable к int
s и может участвовать в арифметических операциях. Это - часто не желаемый результат, когда значение должно просто использоваться для тестирования истины.
convertible-to-bool
обычно что-то как a void*
, где нулевой указатель является ложью, и что-либо еще верно, и все же не может использоваться для арифметических операций.
Возможно, для производительности? В C/C++ можно сделать, если оператор на числах (0 ложь, что-либо еще верно). Преобразование в строгий bool является дополнительной операцией, которая во многих случаях не требовалась бы.
Я на самом деле не использовал повышение, таким образом, это - просто предположение, но оно походит на разумный мне.