Я перефокусировал свои вопросы и попытался указать как можно точнее c. ниже я также включил код, который использовал до сих пор:
(1) При извлечении данных из SQL мое время находится в смешанном формате, который содержит букву, с которой трудно работать. Чтобы избежать проблем с этим, я пытался подать заявку; df.time = pd.to_timedelta (df.time, unit = 'ms'), что хорошо, если вы не знаете, как извлечь часы и минуты. Пример; 2019.11.22D01: 18: 00.01000, мне просто нужно иметь столбец «время» в следующем формате; '01: 18: 00,01000. Может быть, я могу использовать 'np.datetime64', чтобы преобразовать все мои записи SQL в нужный формат и обрезать необходимое количество символов? Пожалуйста, посоветуйте команду. Я также пытался 'data = np.datetime64 (' time '), но получал' Ошибка синтаксического анализа строки даты и времени "time" в позиции 0 ".
(2) Я пытаюсь сгруппировать данные ниже по 2 факторам, сначала «data2», а затем «time». Это потому, что мои данные будут не в порядке ниже, а в случайном порядке. Я получаю: DataFrameGroupBy не вызывается. Это потому, что у меня есть повторяющиеся значения data2? Не могли бы вы помочь с тем, что вызывает это?
(3) Так что после того, как я сгруппировал свои данные по 'data2' и 'time', мне нужно затем поместить данные в заданные интервалы времени (т. Е. [0 = 10ms), [10-20ms) et c), поэтому строки 0,1,2 попадут, например, в корзину [0-10ms). Таким образом, мне нужно сначала определить эти ячейки (у меня будет фиксированный набор корзин). Затем, для следующего изменения «data2» (скажем, от 55 до 56), мы устанавливаем время начала равным 0 и помещаем в строку данные строки, основанные на времени, прошедшем от 0 до тех пор, пока data2 снова не изменится. И так далее. Как я могу кодировать это, где я больше всего борюсь с установкой таймера на «0» и ссылкой на «время» для каждой строки, пока значение «data2» не изменилось. Затем, когда изменяется «data2», начинайте все сначала, соответственно разбивая данные.
Ниже приведен код, который я использовал до сих пор;
import pyodbc
import pandas as pd
import numpy as np
conn = pyodbc.connect('Driver={SQL Server};'
'Server=XXXXXXXXX;'
'Database=Dynamics;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
SQL_Query = pd.read_sql_query('''select ID,time,data1,data2,data3,data4,data5 from Dynamics''', conn)
df = pd.DataFrame(SQL_Query, columns=['ID','time','data2','data3','data4','data5'])
df.time=pd.to_timedelta(df.time, unit='ms')
df[['data4']] = df[['data4']].apply(pd.to_numeric)
df['diff']=df['data4']-df['data5']
df['diff']=df['diff'].abs()
df=df.groupby(['data3','time'])
print(df)
time data_1 data_2 data_3 data_4 data_5
0 2019-11-22 01:18:00.010 a 55 A 1.20 1.24
1 2019-11-22 01:18:00.090 a 55 B 1.25 1.24
2 2019-11-22 01:18:00.100 a 55 C 1.26 1.24
3 2019-11-22 01:18:00.140 a 55 A 1.22 1.22
4 2019-11-22 01:18:00.160 a 55 B 1.23 1.22