首页 > 解决方案 > 如何根据熊猫中的两列条件提取数据

问题描述

我有一个完整的数据集(336663,675)。我提取了数据集中最好的 50 个特征,即累积数据。现在我的数据集是 (336663,51)。我想基于 Chassis_id 列提取数据,例如(B-689653)和具有值(0,1)的目标列。我计算了一个唯一的Chassis_id,即 6675。我想提取 500 个具有目标值的唯一机箱 ID,至少 (1) 没有重复值 1,并且对于相同的机箱 ID,它也有 0 目标值。我的数据集看起来像。

chassis_id  lx_pmu_p1fwm_engine_speed_torque_h_x_index_1    lx_pmu_p1fwm_engine_speed_torque_h_y_index_1    lx_pmu_p1fwm_engine_speed_torque_h_y_index_10   lx_pmu_p1fwm_engine_speed_torque_h_y_index_11   lx_pmu_p1fwm_engine_speed_torque_h_y_index_12   lx_pmu_p1fwm_engine_speed_torque_h_y_index_2    lx_pmu_p1fwm_engine_speed_torque_h_y_index_3    lx_pmu_p1fwm_engine_speed_torque_h_y_index_6    lx_pmu_p1fwm_engine_speed_torque_h_y_index_7    ... lx_pst_p1em9_12_pmairdryercartridgeresetvehicl  lx_pst_p1em9_13_pmairdryercartridgeresetengine  lx_total_vehicle_distance_rule_based    x_pst_p1c2o_365_vdlcomprtotaltime_log   age_months  age_years   index   slx_pfe_0008_nbr_of_gearshifts  lx_psc_p1bby_total_fuel_consumption target
0   B-689653    2021.500000 1781.000000 134.000000  116.500000  199.500000  1887.000000 411.500000  227.000000  203.000000  ... 3.966420e+08    2.576429e+07    407768.285714   2.886354e+07    49  4.1 59  1.097197e+06    168443.547071   0
1   B-689653    3189.833333 2122.000000 157.000000  136.000000  231.000000  2204.000000 467.000000  340.833333  234.000000  ... 4.218106e+08    2.747081e+07    472178.233333   3.344411e+07    56  4.7 73  1.258732e+06    194795.161889   0
2   B-689653    1271.538813 1131.897717 98.544292   86.657534   147.538813  1337.124201 296.357991  166.649315  149.873059  ... 2.797100e+08    1.720796e+07    313343.510638   2.057084e+07    37  3.1 34  8.198200e+05    129537.235780   0
3   B-689653    751.934132  641.526946  62.425150   54.425150   94.095808   869.185629  189.610778  109.347305  96.263473   ... 1.501943e+08    8.925830e+06    202014.000000   1.287711e+07    22  1.8 4   5.264317e+05    81851.484950    0
4   B-689653    882.568862  784.449102  73.419162   65.419162   110.263473  1001.760479 225.179641  127.455090  113.724551  ... 1.958617e+08    1.174458e+07    231647.428571   1.469532e+07    25  2.1 11  6.159844e+05    93664.449960    0
5 rows × 52 columns

我已经使用了代码,但它没有工作。

形状的主要数据集(336663,675)

data = pd.read_csv("prodcut_data.csv", low_memory=False, na_values='?')

我提取了最好的 50 个特征数据

data1 = pd.read_csv("LVD-F_selc_F_extr.csv", low_memory=False, na_values='?')

我在其他数据框中有 chassis_id 所以,我将它与提取的最佳 50 个特征数据连接起来。

data2 = pd.concat([data.chassis_id, data1], axis=1)

mask = (data2[data2['target'].eq(1)].duplicated(subset['chassis_id']).reindex(data2.index,fill_value=False))

data2 = data2[~mask]
print(data2)

此代码将所有数据集返回给我。不是想要的

标签: pythonpandasgroup-by

解决方案


推荐阅读