как извлечь данные на основе условия двух столбцов в pandas - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть полный набор данных (336663,675) . Я извлек 50 лучших функций из набора данных, который представляет собой совокупные данные. Теперь мой набор данных (336663,51). Я хочу извлечь данные на основе столбца Chassis_id, например (B-689653) и столбца Target со значением (0,1). Я вычислил уникальный Chassis_id , равный 6675. Я хочу извлечь 500 уникальных chassis_id, у которых есть целевое значение по крайней мере (1), нет повторяющегося значения 1, и оно также имеет 0 целевых значений для того же chassis_id. Мой набор данных выглядит следующим образом.

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)

Этот код возвращает мне весь набор данных. не желаемый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...