Условная логика на Pandas DataFrame
Как применить условную логику к Pandas DataFrame.
См. DataFrame, показанный ниже,
data desired_output
0 1 False
1 2 False
2 3 True
3 4 True
Мои исходные данные отображаются в столбце "данные", а рядом с ним отображается желаемый_выход. Если число в "данных" меньше 2,5, значение "желаемый" - "Ложь".
Я мог бы применить цикл и переконструировать DataFrame... но это было бы "не-pythonic"
Ответы
Ответ 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