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)