Удаление строк, содержащих определенный числовой шаблон (int64) в pandas

#python #pandas #numeric

#python #pandas #числовой

Вопрос:

На удивление, не удается найти простой ответ.

У меня есть два столбца во фрейме данных. Столбец 1 является int64 .

 Column1  Column2
19970101  400
19970102  300
19980101  200
  

Как удалить строки с 1997 шаблоном в Column1 ? Я полагаю, что это не строка, поэтому регулярное выражение не будет работать.

Я думаю, я могу разделить его на две части и удалить все строки, просто имея 1997 отдельно, а затем снова объединить, но было бы здорово найти более простое решение.

Спасибо!

Ответ №1:

Ну:

 df[df['Column1']//10000 != 1997]
  

Или преобразование его в строку:

 df[df['Column1'].astype(str).str[:4] != '1997']
  

Ответ №2:

Затем преобразуйте в str

 df[~df['Column1'].astype(str).str.startswith('1997')]
Out[49]: 
    Column1  Column2
2  19980101      200
  

Когда мы завершаем работу с объектом datetime, мы всегда можем сделать to_datetime

 df[pd.to_datetime(df.Column1,format='%Y%m%d').dt.year!=1997]
Out[52]: 
    Column1  Column2
2  19980101      200