Добавить столбец на основе разных условий для разных столбцов |питон панды - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть фрейм данных с 4 столбцами:

c1        c2        c3      GName
0.221445  0.300534  5.689   KDD
0.001000  0.969000  15.140  ACC
1.000000  0.094000  -0.245  QETF

И фрейм данных называется file одного столбца:

GName
Abd
kkoew
KDD
pwqh
ACC
dsewf

Мне нужно добавить вызов нового столбца label, которыйна основе проверки баллов в c1, c2 and c3 и GName

Итак, если большинство из 3 баллов согласуются с их условиями (2 из 3 или все 3) и значение GName существует вкадр данных file;label = 1, в противном случае label = 0

The conditions of c1 should be > 0.95
c2 should be > 0.50
c3 should be > 15

Результат будет таким:

c1        c2        c3      GName label
0.221445  0.300534  5.689   KDD   0  (because 0 out of 3 and KDD in file)
0.001000  0.969000  15.140  ACC   1  (because 2 out of 3 and ACC in file)
1.000000  0.94060  -0.245  QETF   0  (because 2 out of 3 but QETF not in file)

Я борюсь с этими различными условиями, любая помощьпожалуйста

1 Ответ

0 голосов
/ 21 ноября 2018

Я бы сделал так:

import pandas as pd

df = pd.DataFrame({'c1':[0.221445, 0.001000, 1.000000],
                   'c2':[0.300534, 0.969000, 0.094000],
                   'c3':[5.689, 15.140, -0.245],
                   'GName':['KDD', 'ACC', 'QETF']})
file = pd.DataFrame({'GName':['KDD', 'ACC']})

conditions = (df['c1'] > 0.95).astype(int) + (df['c2'] > 0.5).astype(int) + (df['c3'] > 15).astype(int)
conditions = (conditions >= 2) & (df['GName'].isin(file['GName']))
df['label'] = 0
df.loc[conditions, 'label'] = 1

>>> df
         c1        c2      c3 GName  label
0  0.221445  0.300534   5.689   KDD      0
1  0.001000  0.969000  15.140   ACC      1
2  1.000000  0.094000  -0.245  QETF      0

Было бы неплохо, если бы вы также включили в свой вопрос код для создания своего фрейма данных.

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