python - 为什么 pandas 断言列表和元组相等?
问题描述
为什么 pandasassert_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,)
有关更多详细信息,请参阅此答案
解决方案
推荐阅读
- r - R:使用 sapply 或 str_replace_all 而不是 FindReplace
- nginx - Nginx 坏网关烧瓶 + UWSGI
- python - 第一个子图(x 轴损坏的 2 个子图)未可视化
- android - 如何在 webview 中加载 .rtf 文件?
- php - 如何在安装期间解决 Magento 2(2.4 版本)localhost 500 服务器错误
- python-3.x - Matplotlib MultiCursor 未显示在多个子图上
- java - How can i center textviews in a table row that is constantly being generated dynamically?
- javascript - VueJS:基于 v-select 项目的动态道具
- sql - 使用 SQL Server 更新 JSON 数组
- qt - 如何使用 alpha 混合正确渲染不同颜色的单个字母?