如何在 Python 3 中透视/交叉表数据?
Python 3 中数据透视表/交叉表的最佳解决方案是什么?是否有内置函数可以执行此操作?理想情况下,我正在寻找一个没有外部依赖项的 Python 3 解决方案。例如,给定一个嵌套列表:
nl = [["apples", 2 "New York"],
["peaches", 6, "New York"],
["apples", 6, "New York"],
["peaches", 1, "Vermont"]]
我希望能够重新排列行数据和 groupby 字段:
apples peaches
New York 2 6
Vermont 6 1
上面是一个简单的示例,但是有没有比使用 itertools.groupby 更容易的解决方案每次需要枢轴时?理想情况下,该解决方案将允许行数据在任何列上旋转。我正在争论是否使用 pandas,但它是一个外部库,并且仅具有有限的 Python 3 支持。
What is the best solution to pivot/cross-tab tables in Python 3? Is there a built-in function that will do this? Ideally, I'm looking for a Python 3 solution that does not have external dependencies. For example, given a nested list:
nl = [["apples", 2 "New York"],
["peaches", 6, "New York"],
["apples", 6, "New York"],
["peaches", 1, "Vermont"]]
I would like to be able to rearrange rowed data and groupby fields:
apples peaches
New York 2 6
Vermont 6 1
The above is a trivial example, but is there a solution that would be easier than using itertools.groupby
everytime a pivot is desired? Ideally, the solution would allow rowed data to be pivoted on any column. I was debating about using pandas, but it is an external library and only has limited Python 3 support.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一些简单的代码。提供行/列/总计作为读者的练习。
输出:
另请参阅此答案。
还有这个,我已经忘记了。
Here is some simple code. Providing row/column/grand totals is left as an exercise for the reader.
Output:
See also this answer.
And this one, which I'd forgotten about.
itertools.groupby 正是针对这个问题而设计的。您将很难找到更好的东西,尤其是在标准库中。
itertools.groupby
was exactly made for this problem. You will be hard-pressed to find something better, especially within the standard library.