gpt4 book ai didi

python - 如何在 python 中对列表进行列化?

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:40 25 4
gpt4 key购买 nike

我有一个 pandas Series,足够小,所以我可以阅读所有项目(大约 80 个),但对于屏幕尺寸来说太大了。

是否有一些 python 命令或 ipython(笔记本)魔术命令或 pandas 函数来列化该 listSeries 以便我无需上下滚动即可完整阅读?

我基本上是在寻找与 bash 中的 column 命令等效的命令。

例如,我有一个像这样的 Series:

A      76
B 56
C 42
D 31
E 31
F 25
G 24

假设我的屏幕太小,我需要向下滚动才能看到 B 行之后的内容。我想要的是这样的:

A    76        C    42        E    31        G    24
B 56 D 31 F 25

最佳答案

以下非 numpy/pandas 解决方案可能会给您一些启发:

import itertools

rows = [("A", 76), ("B", 56), ("C", 42), ("D", 31), ("E", 31), ("F", 25), ("G", 24)]

def print_multi_cols(lrows, split_at=5, space_each=4):
for row in itertools.izip(*itertools.izip_longest(*[iter(lrows)]*split_at, fillvalue=(" ", " "))):
for col in row:
print " ".join(["%-*s" % (space_each, item) for item in col]),
print

print_multi_cols(rows, 2)
print_multi_cols(rows, 3)

这给出了以下输出:

A     76      C     42      E     31      G     24     
B 56 D 31 F 25

A 76 D 31 G 24
B 56 E 31
C 42 F 25

您需要先转换您的系列,然后才能使用。使用 Python 2.7 测试。

或者为了更好地控制理由,可以修改如下:

import itertools

rows = [("A", 9), ("B", 56), ("C", 42), ("D", 31), ("E", 31), ("F", 25), ("G", 999)]

def print_multi_cols(lrows, split_at=5, space_each=4, left_justify=None):
if not left_justify:
left_justify = [True] * len(lrows[0])

for row in itertools.izip(*itertools.izip_longest(*[iter(lrows)]*split_at, fillvalue=(" ", " "))):
for col in row:
print " ".join([("%-*s " if left else "%*s ") % (space_each, item) for item, left in itertools.izip(col, left_justify)]),
print
print

print_multi_cols(rows, split_at=5, space_each=3, left_justify=[True, False])

给予:

A      9  F     25 
B 56 G 999
C 42
D 31
E 31

关于python - 如何在 python 中对列表进行列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com