我得到了包含各种数据的数据帧:
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_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()