Ряды Панд имеют словарные свойства.Рассмотрим следующее:
s = pd.Series(['a', 'b', 'c', 'd'], index=[10, 11, 12, 13])
'a' in s # False
10 in s # True
Таким образом, вы фактически проверяете наличие в серии index , а не в серии values .Кроме того, apply
+ lambda
- это неэффективный цикл уровня Python.
В Pandas вам следует обратить внимание на векторизацию операций, например, через pd.Series.isin
, который неявно использует значения.Кроме того, вероятно, сначала будет целесообразно сделать вашу серию сравнения уникальной:
unique_vals = university['RegionName'].unique()
housing['University City'] = housing['RegionName'].isin(unique_vals)
Это создаст логическую серию.Если 0
/ 1
является требованием, вы можете преобразовать в int
:
housing['University City'] = housing['University City'].astype(int)