在比较一系列列表和一系列元组时,为什么熊猫通过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,)
有关更多详细信息,请参见this answer