Я думаю, вы можете проанализировать to_datetime
с параметром errors='coerce'
, а затем использовать strftime
для перевода в дня недели с полным именем языкового стандарта :
print df
TRX_DATE some value
0 2010-08-15 13:00:00 27.065
1 2010-08-16 13:10:00 25.610
2 2010-08-17 02:30:00 17.000
3 2010-06-18 02:40:00 17.015
4 2010-18-19 02:50:00 16.910
df['TRX_DATE'] = pd.to_datetime(df['TRX_DATE'],errors='coerce')
df['day_type'] = df['TRX_DATE'].dt.strftime('%A')
print df
TRX_DATE some value day_type
0 2010-08-15 13:00:00 27.065 Sunday
1 2010-08-16 13:10:00 25.610 Monday
2 2010-08-17 02:30:00 17.000 Tuesday
3 2010-06-18 02:40:00 17.015 Friday
4 NaT 16.910 NaT
Канонический путь состоит в том, чтобы использовать встроенный итератор курсора.
curs.execute('select * from people')
for row in curs:
print row
<час> можно использовать fetchall()
для получения всех строк сразу.
for row in curs.fetchall():
print row
может быть удобно использовать это для создания списка Python, содержащего возвращенные значения:
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
Это может быть полезно для меньших наборов результатов, но может иметь плохие побочные эффекты, если набор результатов является большим.
необходимо ожидать всего набора результатов, который будет возвращен к клиентскому процессу.
можно съесть большую память в клиенте для содержания составного списка.
Это может требовать времени для Python, чтобы создать и вскрыть противоречия в списке, который Вы собираетесь сразу отбросить так или иначе.
, Если Вы знаете, существует единственная строка, возвращаемая в наборе результатов, который можно назвать fetchone()
для получения единственной строки.
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
<час> Наконец, можно циклично выполниться по набору результатов, выбирающему одну строку за один раз. В целом нет никакого конкретного преимущества в выполнении этого по использованию итератора.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()
Моим предпочтительным путем является итератор курсора, но установка сначала arraysize свойства курсора.
curs.execute('select * from people')
curs.arraysize = 256
for row in curs:
print row
В этом примере, cx_Oracle выберет строки от Oracle 256 строк за один раз, сокращая количество сетевых распространений в прямом и обратном направлениях, которые должны быть выполнены
Существует также путь psyco-pg
, кажется, делает это... Из того, что я собираюсь, это, кажется, создает подобные словарю прокси строки для отображения ключевого поиска в блок памяти, возвращенный запросом. В этом случае выборка целого ответа и работа с подобной фабрикой прокси по строкам походят на полезную идею. Задумайтесь о нем, хотя, это чувствует больше как Lua, чем Python.
кроме того, это должно быть применимо ко всему интерфейсы PEP-249 DBAPI2.0, не только Oracle, или Вы имели в виду всего самый быстрый использование Oracle?