如何从其他两个数据帧及其对应的数据帧中创建一个数据帧

时间:2020-06-18 00:05:28

标签: python pandas

我有一个用于显示真实数据的数据框:

(Pdb) df_gt_example =

            CENTER_X  CENTER_Y  VELOCITY  ACCELERATION  LENGTH  WIDTH   HEADING  TURN_RATE  CLASS
FrameId OId                                                                                       
1       0      -19.0     -11.0       1.0           0.5     2.0    2.0  0.785398        0.5    1.0
2       0      -17.0      -9.0       1.0           0.5     2.0    2.0  0.785398        0.5    1.0
0       1      -18.0      -4.0       1.0           0.5     2.0    2.0  0.785398        0.5    1.0
1       1      -17.0      -3.0       1.0           0.5     2.0    2.0  0.785398        0.5    1.0
2       1      -16.0      -2.0       1.0           0.5     2.0    2.0  0.785398        0.5    1.0
0       2      -15.0     -18.0       1.0           0.5     2.0    2.0  0.523599        0.5    1.0
1       2      -13.0     -20.0       1.0           0.5     2.0    2.0  0.523599        0.5    1.0
2       2      -13.5     -16.5       1.0           0.5     2.0    2.0  0.523599        0.5    1.0
0       3       17.0      -3.0       1.0           0.5     2.0    2.0  1.047198        0.5    1.0
1       3       17.0      -3.0       1.0           0.5     2.0    2.0  1.047198        0.5    1.0
2       3       17.0      -3.0       1.0           0.5     2.0    2.0  1.047198        0.5    1.0

我有一个来自模型输出的数据框(假设):

df_hp_example = 
            CENTER_X  CENTER_Y  VELOCITY  ACCELERATION  LENGTH  WIDTH    HEADING  TURN_RATE  CLASS
FrameId HId                                                                                        
0       0     -17.68     -3.68       2.0           0.8     2.1    2.1   1.570796   1.023599      1
1       0     -16.68     -2.68       2.0           0.8     2.1    2.1   1.570796   1.023599      1
2       0     -13.18    -16.18       2.0           0.8     2.1    2.1   1.308997   1.023599      1
0       1     -14.68    -17.68       2.0           0.8     2.1    2.1   1.308997   1.023599      1
1       1     -12.68    -19.68       2.0           0.8     2.1    2.1   1.308997   1.023599      1
2       1     -15.68     -1.68       2.0           0.8     2.1    2.1   1.570796   1.023599      1
1       2     -18.68    -10.68       2.0           0.8     2.1    2.1   1.570796   1.023599      1
2       2     -16.68     -8.68       2.0           0.8     2.1    2.1   1.570796   1.023599      1
0       3      37.00     17.00      21.0          20.5    22.0   22.0  21.047198  20.500000      1
1       3      22.00      2.00       6.0           5.5     7.0    7.0   6.047198   5.500000      1

我知道假阳性事件,即存在假设但没有事实真相的框架:

fp_events = 
   FrameId Type  OId  HId
1        0   FP  NaN  3.0
3        1   FP  NaN  3.0

我也知道假阴性,我们拥有地面真实性的帧,但是模型错过了它们:

fn_events = 
   FrameId  Type  OId  HId
0        0  MISS  3.0  NaN
2        1  MISS  3.0  NaN
4        2  MISS  3.0  NaN

现在我需要使用来自groundtruth和假设的以下各列制作一个数据框:

final_df = pd.DataFrame(columns= [FrameId, OId, HId, gt_class, hp_class, gt_CENTER_X, gt_CENTER_Y, hp_CENTER_X, hp_CENTER_Y])
  1. 对于误报(fp_events),请从df_hp_example中查询(FrameId,HId)的相应列,并使用np.nan填写有关Groundtruth的列(例如gt_CENTER_Xgt_CENTER_Y
  2. 对于错误的否定(fn_events),请从df_gt_example中查询(FrameId,OId)的对应列,并使用np.nan(如hp_CENTER_Xhp_CENTER_Y)填写与假设有关的列

结果将是

   gt_CLASS hp_CLASS FrameId  OId  HId  gt_CENTER_X  gt_CENTER_Y  gt_VELOCITY  gt_ACCELERATION  gt_LENGTH  gt_WIDTH  gt_HEADING  gt_TURN_RATE hp_CENTER_X hp_CENTER_Y hp_VELOCITY hp_ACCELERATION hp_LENGTH hp_WIDTH hp_HEADING hp_TURN_RATE
0       1.0      NaN       0  3.0  NaN         17.0         -3.0          1.0              0.5        2.0       2.0    1.047198           0.5         NaN         NaN         NaN             NaN       NaN      NaN        NaN          NaN
1       1.0      NaN       1  3.0  NaN         17.0         -3.0          1.0              0.5        2.0       2.0    1.047198           0.5         NaN         NaN         NaN             NaN       NaN      NaN        NaN          NaN
2       1.0      NaN       2  3.0  NaN         17.0         -3.0          1.0              0.5        2.0       2.0    1.047198           0.5         NaN         NaN         NaN             NaN       NaN      NaN        NaN          NaN
3       NaN        1       0  NaN    3          NaN          NaN          NaN              NaN        NaN       NaN         NaN           NaN          37          17          21            20.5        22       22    21.0472         20.5
4       NaN        1       1  NaN    3          NaN          NaN          NaN              NaN        NaN       NaN         NaN           NaN          22           2           6             5.5         7        7     6.0472          5.5

0 个答案:

没有答案