panda df迭代,基于时间的数据装箱(以毫秒为单位)

问题描述 投票:-1回答:1

我重新提出了问题的重点,并尝试尽可能具体。在下面,我还包括到目前为止使用的代码;

((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)我尝试按以下两个因素对我的数据进行分组,首先是'data2',然后是'time'。这是因为我的数据不是按以下顺序而是按随机顺序排列。我得到:'DataFrameGroupBy'是不可调用的。那是因为我有重复的data2值吗?您能否帮忙解决此问题?

(3)因此,在将数据按'data2'和'time'分组之后,我需要在预定义的时间间隔(即[0 = 10ms],[10-20ms)等)内对数据进行分箱,因此例如,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

我重新提出了问题的重点,并尝试尽可能具体。在下面,我还包括到目前为止使用的代码; (1)从SQL中提取数据时,我的时间是一种混合格式,其中包含...

python pandas loops dataframe binning
1个回答
0
投票

熊猫具有日期范围的强大功能。这是一个创建一分钟范围的示例,在每一行上都有一个新的毫秒(这也是索引)。

© www.soinside.com 2019 - 2024. All rights reserved.