Python 带选择的数据帧矫揉造作

Python 带选择的数据帧矫揉造作,python,dataframe,Python,Dataframe,我得到了包含各种数据的数据帧: tag_id time AA AA_id RSSI p t status vs unitag delta_time 0 15729759 2020-11-18 09:18:15.473 AA 0x00022646 -28 186000 290.15 0 2.82 Unitag NaN 1 15729759 202

我得到了包含各种数据的数据帧:

      tag_id                    time  AA       AA_id  RSSI       p       t  status    vs  unitag  delta_time
0   15729759 2020-11-18 09:18:15.473  AA  0x00022646   -28  186000  290.15       0  2.82  Unitag         NaN
1   15729759 2020-11-18 09:18:16.039  _B  0x00000000     0  186000  290.15       0  2.82  Unitag         NaN
2   15729724 2020-11-18 09:18:31.069  AA  0x00022646   -31  187000  291.15       0  2.81  Unitag         NaN
3   15729724 2020-11-18 09:18:31.621  _B  0x00000000     0  187000  291.15       0  2.81  Unitag         NaN
4   14946100 2020-11-18 09:18:45.304  AA  0x00022646   -22  190000  290.15       0  2.81  Unitag         NaN
5   14946100 2020-11-18 09:18:45.867  _B  0x00000000     0  190000  290.15       0  2.81  Unitag         NaN
6   14945509 2020-11-18 09:19:01.916  AA  0x00022646   -30  189000  291.15       0  2.81  Unitag         NaN
7   14945509 2020-11-18 09:19:02.466  _B  0x00000000     0  189000  291.15       0  2.81  Unitag         NaN
8   15729736 2020-11-18 09:19:07.454  AA  0x00022646   -28  186000  290.15       0  2.82  Unitag         NaN
9   15729736 2020-11-18 09:19:07.995  _B  0x00000000     0  186000  290.15       0  2.82  Unitag         NaN
10  15729762 2020-11-18 09:19:08.672  AA  0x00022646   -25  185000  290.15       0  2.83  Unitag         NaN
11  15729762 2020-11-18 09:19:09.242  _B  0x00000000     0  185000  290.15       0  2.83  Unitag         NaN
12  15729759 2020-11-18 09:19:17.512  AA  0x00022646   -28  186000  290.15       0  2.82  Unitag         NaN
13  15729759 2020-11-18 09:19:18.069  _B  0x00000000     0  186000  290.15       0  2.82  Unitag         NaN
14  15729724 2020-11-18 09:19:34.535  AA  0x00022646   -32  186000  291.15       0  2.81  Unitag         NaN
15  15729724 2020-11-18 09:19:35.085  _B  0x00000000     0  186000  291.15       0  2.81  Unitag         NaN
16  14946100 2020-11-18 09:19:48.615  AA  0x00022646   -22  189000  290.15       0  2.81  Unitag         NaN
17  14946100 2020-11-18 09:19:49.206  _B  0x00000000     0  189000  290.15       0  2.81  Unitag         NaN
18  14945509 2020-11-18 09:20:04.857  AA  0x00022646   -30  189000  291.15       0  2.81  Unitag         NaN
19  14945509 2020-11-18 09:20:05.415  _B  0x00000000     0  189000  291.15       0  2.81  Unitag         NaN
我想计算1个空列:delta_time。 我想做一个简单的
time-time.shift()
但是通过选择与相同的
tag\u id
和相同的
AA

所以我试了一下:

index_d = {}
for tag in df.tag_id.unique():
    index_d[tag] = df.loc[df['tag_id']==tag].index

for antenna_type in df.AA.unique():
    for tag in df.tag_id.unique():
        df.loc[df['tag_id']==tag].loc[df['AA']==antenna_type]['delta_time'] = df.iloc[index_d[tag]].loc[df['AA']==antenna_type].time - df.iloc[index_d[tag]].loc[df['AA']==antenna_type].time.shift()
但我的delta_time列保持为空。。。
您知道如何做到这一点吗???

您可以在组内使用shift,这样您就不必过滤相同的天线类型:

df['prev_time'] = df.groupby('AA')['time'].shift()

您可以在组内使用shift,这样就不必对相同的天线类型进行过滤:

df['prev_time'] = df.groupby('AA')['time'].shift()

完美的答案是:
df['prev\u time']=df.groupby(['tag\u id','AA'])['time'].shift()
df['delta\u time']=df['time']-df['prev\u time']df.drop(['prev\u time'],axis=1)完美的答案是:
df['prev\u time']=df.groupby(['tag\u id','AA'],'time']]['prev_time']
df.drop(['prev_time'],axis=1)