Проблема в том, что pandas рассматривает [1, 2]
как рядоподобный объект и пытается сравнить каждый элемент df.Li
с каждым элементом [1, 2]
, поэтому возникает ошибка:
ValueError: длины должны совпадать для сравнения
Невозможно сравнить список размера два со списком размера 3 (df.Li
). Чтобы убедиться в этом, вы можете сделать следующее:
print(df.Li == [1, 2, 3])
Вывод
0 False
1 False
2 False
Name: Li, dtype: bool
Он не выдает никакой ошибки и работает, но возвращает False
для всех, как и ожидалось. Чтобы сравнить использование списка, вы можете сделать следующее:
# this creates an array where each element is [1, 2]
data = np.empty(3, dtype=np.object)
data[:] = [[1, 2] for _ in range(3)]
print(df.Li == data)
Output
0 True
1 False
2 False
Name: Li, dtype: bool
В целом это похоже на bug в сторону pandas.