Почему панды утверждают, что списки и кортежи равны?
Почему панды проходят assert_series_equal
при сравнении серии списков и серии кортежей?
Пример, этот тест проходит:
l = pd.Series([[1], [2], [3]])
t = pd.Series([(1,), (2,), (3,)])
pd.testing.assert_series_equal(l, t)
Я нахожу это особенно тревожным, поскольку вы не можете агрегировать мультииндексированный фрейм данных для серии списков, если первый результат в агрегаторе возвращает список для первой группы. Тем не менее, это работает для кортежей.
Пример:
>>> df = pd.DataFrame([[0, 0, 0], [1, 1, 2], [[1], [2], [3]], [(1,), (2,), (3,)]]).T
>>> df
0 1 2 3
0 0 1 [1] (1,)
1 0 1 [2] (2,)
2 0 2 [3] (3,)
>>> df.groupby([0, 1])[2].agg(sum)
ValueError: Function does not reduce
>>> df.groupby([0, 1])[3].agg(sum)
0 1
0 1 (1, 2)
2 (3,)
Смотрите этот ответ для более подробной информации