@@ -1384,165 +1384,6 @@ def convert_sql_column(x):
1384
1384
return maybe_convert_objects(x, try_float = 1 )
1385
1385
1386
1386
1387
- def try_parse_dates (ndarray[object] values , parser = None ,
1388
- dayfirst = False , default = None ):
1389
- cdef:
1390
- Py_ssize_t i, n
1391
- ndarray[object ] result
1392
-
1393
- n = len (values)
1394
- result = np.empty(n, dtype = ' O' )
1395
-
1396
- if parser is None :
1397
- if default is None : # GH2618
1398
- date= datetime.now()
1399
- default= datetime(date.year, date.month, 1 )
1400
-
1401
- try :
1402
- from dateutil.parser import parse
1403
- parse_date = lambda x : parse(x, dayfirst = dayfirst, default = default)
1404
- except ImportError : # pragma: no cover
1405
- def parse_date (s ):
1406
- try :
1407
- return datetime.strptime(s, ' %m /%d /%Y ' )
1408
- except Exception :
1409
- return s
1410
- # EAFP here
1411
- try :
1412
- for i from 0 <= i < n:
1413
- if values[i] == ' ' :
1414
- result[i] = np.nan
1415
- else :
1416
- result[i] = parse_date(values[i])
1417
- except Exception :
1418
- # failed
1419
- return values
1420
- else :
1421
- parse_date = parser
1422
-
1423
- try :
1424
- for i from 0 <= i < n:
1425
- if values[i] == ' ' :
1426
- result[i] = np.nan
1427
- else :
1428
- result[i] = parse_date(values[i])
1429
- except Exception :
1430
- # raise if passed parser and it failed
1431
- raise
1432
-
1433
- return result
1434
-
1435
-
1436
- def try_parse_date_and_time (ndarray[object] dates , ndarray[object] times ,
1437
- date_parser = None , time_parser = None ,
1438
- dayfirst = False , default = None ):
1439
- cdef:
1440
- Py_ssize_t i, n
1441
- ndarray[object ] result
1442
-
1443
- from datetime import date, time, datetime, timedelta
1444
-
1445
- n = len (dates)
1446
- if len (times) != n:
1447
- raise ValueError (' Length of dates and times must be equal' )
1448
- result = np.empty(n, dtype = ' O' )
1449
-
1450
- if date_parser is None :
1451
- if default is None : # GH2618
1452
- date= datetime.now()
1453
- default= datetime(date.year, date.month, 1 )
1454
-
1455
- try :
1456
- from dateutil.parser import parse
1457
- parse_date = lambda x : parse(x, dayfirst = dayfirst, default = default)
1458
- except ImportError : # pragma: no cover
1459
- def parse_date (s ):
1460
- try :
1461
- return date.strptime(s, ' %m /%d /%Y ' )
1462
- except Exception :
1463
- return s
1464
- else :
1465
- parse_date = date_parser
1466
-
1467
- if time_parser is None :
1468
- try :
1469
- from dateutil.parser import parse
1470
- parse_time = lambda x : parse(x)
1471
- except ImportError : # pragma: no cover
1472
- def parse_time (s ):
1473
- try :
1474
- return time.strptime(s, ' %H :%M :%S ' )
1475
- except Exception :
1476
- return s
1477
-
1478
- else :
1479
- parse_time = time_parser
1480
-
1481
- for i from 0 <= i < n:
1482
- d = parse_date(str (dates[i]))
1483
- t = parse_time(str (times[i]))
1484
- result[i] = datetime(d.year, d.month, d.day,
1485
- t.hour, t.minute, t.second)
1486
-
1487
- return result
1488
-
1489
-
1490
- def try_parse_year_month_day (ndarray[object] years , ndarray[object] months ,
1491
- ndarray[object] days ):
1492
- cdef:
1493
- Py_ssize_t i, n
1494
- ndarray[object ] result
1495
-
1496
- from datetime import datetime
1497
-
1498
- n = len (years)
1499
- if len (months) != n or len (days) != n:
1500
- raise ValueError (' Length of years/months/days must all be equal' )
1501
- result = np.empty(n, dtype = ' O' )
1502
-
1503
- for i from 0 <= i < n:
1504
- result[i] = datetime(int (years[i]), int (months[i]), int (days[i]))
1505
-
1506
- return result
1507
-
1508
-
1509
- def try_parse_datetime_components (ndarray[object] years ,
1510
- ndarray[object] months ,
1511
- ndarray[object] days ,
1512
- ndarray[object] hours ,
1513
- ndarray[object] minutes ,
1514
- ndarray[object] seconds ):
1515
-
1516
- cdef:
1517
- Py_ssize_t i, n
1518
- ndarray[object ] result
1519
- int secs
1520
- double float_secs
1521
- double micros
1522
-
1523
- from datetime import datetime
1524
-
1525
- n = len (years)
1526
- if (len (months) != n or len (days) != n or len (hours) != n or
1527
- len (minutes) != n or len (seconds) != n):
1528
- raise ValueError (' Length of all datetime components must be equal' )
1529
- result = np.empty(n, dtype = ' O' )
1530
-
1531
- for i from 0 <= i < n:
1532
- float_secs = float (seconds[i])
1533
- secs = int (float_secs)
1534
-
1535
- micros = float_secs - secs
1536
- if micros > 0 :
1537
- micros = micros * 1000000
1538
-
1539
- result[i] = datetime(int (years[i]), int (months[i]), int (days[i]),
1540
- int (hours[i]), int (minutes[i]), secs,
1541
- int (micros))
1542
-
1543
- return result
1544
-
1545
-
1546
1387
def sanitize_objects (ndarray[object] values , set na_values ,
1547
1388
convert_empty = True ):
1548
1389
cdef:
0 commit comments