Почему содержит не может выбрать строки содержит указанную строку? - PullRequest
2 голосов
/ 21 января 2020
>>> y
1    2002-12-31
2    2003-12-31
3    2004-03-31
4    2004-06-30
Name: report_date, dtype: object

Я хочу извлечь строки, содержащие 12-31.

>>> y.str.contains('12-31')
>>> y.str.contains('\.+12-31')
>>> y.str.contains('2002-12-31')

Все три выражения получают одинаковый вывод:

1   NaN
2   NaN
3   NaN
4   NaN
Name: report_date, dtype: float64

Как извлечь строки, содержащие строка 12-31? Мой желаемый вывод:

1   True
2   True
3   NaN
4   NaN

Ответы [ 3 ]

3 голосов
/ 21 января 2020

Возможно, поработайте с датами и проверьте поля месяца и дня:

df['report_date'] = pd.to_datetime(df.report_date)

df[df.report_date.dt.month.eq(12) & df.report_date.dt.day.eq(31)]

report_date
1  2002-12-31
2  2003-12-31
3 голосов
/ 21 января 2020

Возможно, в столбце указаны даты, поэтому преобразуйте их в строки до:

m = y.astype(str).str.contains('12-31')
print (m)
0     True
1     True
2    False
3    False
Name: report_date, dtype: bool
2 голосов
/ 21 января 2020

Я бы сделал

y.dt.strftime('%m-%d')=='12-31'
...