我有一个 pandas Series
,足够小,所以我可以阅读所有项目(大约 80 个),但对于屏幕尺寸来说太大了。
是否有一些 python
命令或 ipython
(笔记本)魔术命令或 pandas
函数来列化该 list
或 Series
以便我无需上下滚动即可完整阅读?
我基本上是在寻找与 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
我是一名优秀的程序员,十分优秀!