tl; dr non-captureuring groups, как следует из названия, являются частями регулярного выражения, которые вы не хотите включать в соответствие, и ?:
- способ определить группу как не захватывающую.
Допустим, у вас есть адрес электронной почты example@example.com
. Следующее регулярное выражение создаст две группы: часть id и часть @ example.com. (\p{Alpha}*[a-z])(@example.com)
. Для простоты мы извлекаем все имя домена, включая символ @
.
Теперь скажем, вам нужна только идентификационная часть адреса. То, что вы хотите сделать, - захватить первую группу результата совпадения, окруженную ()
в регулярном выражении, и способ сделать это - использовать синтаксис группы без захвата, т. Е. ?:
. Поэтому регулярное выражение (\p{Alpha}*[a-z])(?:@example.com)
вернет только идентификационную часть сообщения.
Примечание. Временная метка - это просто время unix с наносекундами (поэтому разделите его на 10 ** 9):
[t.value // 10 ** 9 for t in tsframe.index]
Например:
In [1]: t = pd.Timestamp('2000-02-11 00:00:00')
In [2]: t
Out[2]: <Timestamp: 2000-02-11 00:00:00>
In [3]: t.value
Out[3]: 950227200000000000L
In [4]: time.mktime(t.timetuple())
Out[4]: 950227200.0
Как точки @ вы быстрее извлекаете массив значений напрямую:
tsframe.index.astype(np.int64) // 10 ** 9