Подтвердить что ты не робот

Условная логика на Pandas DataFrame

Как применить условную логику к Pandas DataFrame.

См. DataFrame, показанный ниже,

   data desired_output
0     1          False
1     2          False
2     3           True
3     4           True

Мои исходные данные отображаются в столбце "данные", а рядом с ним отображается желаемый_выход. Если число в "данных" меньше 2,5, значение "желаемый" - "Ложь".

Я мог бы применить цикл и переконструировать DataFrame... но это было бы "не-pythonic"

4b9b3361

Ответ 1

Просто сравните столбец с этим значением:

In [9]: df = pandas.DataFrame([1,2,3,4], columns=["data"])

In [10]: df
Out[10]: 
   data
0     1
1     2
2     3
3     4

In [11]: df["desired"] = df["data"] > 2.5
In [11]: df
Out[12]: 
   data desired
0     1   False
1     2   False
2     3    True
3     4    True

Ответ 2

In [1]: df
Out[1]:
   data
0     1
1     2
2     3
3     4

Вы хотите применить функцию, которая условно возвращает значение на основе выбранного столбца DataFrame.

In [2]: df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')
Out[2]:
0     true
1     true
2    false
3    false
Name: data

Затем вы можете назначить этот возвращенный столбец новому столбцу в вашем фрейме данных:

In [3]: df['desired_output'] = df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')

In [4]: df
Out[4]:
   data desired_output
0     1           true
1     2           true
2     3          false
3     4          false

Ответ 3

В этом конкретном примере, где DataFrame - только один столбец, вы можете написать это элегантно, как:

df['desired_output'] = df.le(2.5)

le проверяет, имеют ли элементы меньше или равны 2,5, аналогично lt меньше, gt и ge.

Ответ 4

In [34]: import pandas as pd

In [35]: import numpy as np

In [36]:  df = pd.DataFrame([1,2,3,4], columns=["data"])

In [37]: df
Out[37]: 
   data
0     1
1     2
2     3
3     4

In [38]: df["desired_output"] = np.where(df["data"] <2.5, "False", "True")

In [39]: df
Out[39]: 
   data desired_output
0     1          False
1     2          False
2     3           True
3     4           True