Почему панды утверждают, что списки и кортежи равны?

Почему панды проходят 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,)

Смотрите этот ответ для более подробной информации

0 ответов

Другие вопросы по тегам