изменяет условия с помощью if на datraframe python, создает функцию - PullRequest
0 голосов
/ 07 марта 2019

У меня есть датафрейм с четырьмя столбцами.

Dataframe

У меня должно быть нормально: conso_HC=index_fin_HC-index_debut_HC.Но, как вы видите, это не так, вычитание действительно равно этому.Проблема в том, что если мы хотим найти conso_HC, вам нужно добавить иногда 100000 к одному из index_fin_HC или index_debut_HC.

 x=fichier['index_fin_HC']-fichier['index_debut_HC']
y=fichier['conso_HC']
def conditions(x,y):
    if x+100000==y:
        return x
    elif x==y+100000:
        return y
fichier['test']=fichirt

1 Ответ

0 голосов
/ 07 марта 2019

Легко построить новую серию, которая проверяет условие:

>>> (df.soustraction + 100000 == df.conso) | (df.soustraction - 100000 == df.conso)
0    False
1    False
2    False
3    False
4     True
5     True
6    False
dtype: bool

Вы можете:

  1. добавить его в кадр данных в качестве нового столбца:

    df['condition'] = (df.soustraction + 100000 == df.conso) | (df.soustraction - 100000 == df.conso)
    
  2. выбор строк в кадре данных, соответствующих условию

    >>> df[(df.soustraction + 100000 == df.conso) | (df.soustraction - 100000 == df.conso)]
         debut     fin    conso  soustraction
    4  99193.0   526.0   1333.0      -98667.0
    5  91833.0  6407.0  14574.0      -85426.0
    
  3. выбор строк в кадре данных, не соответствующих условию

    >>> df[~ ((df.soustraction + 100000 == df.conso) | (df.soustraction - 100000 == df.conso))]
         debut     fin   conso  soustraction
    0  34390.0   414.0   452.0      -33976.0
    1  18117.0    85.0   216.0      -18032.0
    2  37588.0   234.0  8468.0      -37354.0
    3  49060.0    53.0  1399.0      -49007.0
    6  38398.0  1594.0  1994.0      -36804.0
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...