如何将 pandas 数据框转换为文档字符串布局

Mor*_*itz -2 python pandas

考虑以下数据框:

{('CA', 'ca'): {('A', 'a'): 2,
 ('A', 'aa'): 2,
  ('B', 'b'): 2,
  ('B', 'bb'): 2,
  ('C', 'c'): 2,
  ('C', 'cc'): 2},
 ('CA', 'cb'): {('A', 'a'): 1,
  ('A', 'aa'): 1,
  ('B', 'b'): 1,
  ('B', 'bb'): 1,
  ('C', 'c'): 1,
  ('C', 'cc'): 1}}
Run Code Online (Sandbox Code Playgroud)

如何将数据框转换为可以通过与此类似的复制和粘贴插入到文档字符串中的布局?

+-------------+----------+---------+
| First       |   Second |   Third |
+=============+==========+=========+
| ('A', 'a')  |        2 |       1 |
+-------------+----------+---------+
...
Run Code Online (Sandbox Code Playgroud)

hir*_*ist 6

tabulate可能会帮助你开始:

import pandas as pd
from tabulate import tabulate

df = pd.DataFrame(
    {
        ("CA", "ca"): {
            ("A", "a"): 2,
            ("A", "aa"): 2,
            ("B", "b"): 2,
            ("B", "bb"): 2,
            ("C", "c"): 2,
            ("C", "cc"): 2,
        },
        ("CA", "cb"): {
            ("A", "a"): 1,
            ("A", "aa"): 1,
            ("B", "b"): 1,
            ("B", "bb"): 1,
            ("C", "c"): 1,
            ("C", "cc"): 1,
        },
    }
)

tab = tabulate(df, tablefmt="grid")
print(tab)
Run Code Online (Sandbox Code Playgroud)

哪个输出

+-------------+---+---+
| ('A', 'a')  | 2 | 1 |
+-------------+---+---+
| ('A', 'aa') | 2 | 1 |
+-------------+---+---+
| ('B', 'b')  | 2 | 1 |
+-------------+---+---+
| ('B', 'bb') | 2 | 1 |
+-------------+---+---+
| ('C', 'c')  | 2 | 1 |
+-------------+---+---+
| ('C', 'cc') | 2 | 1 |
+-------------+---+---+
Run Code Online (Sandbox Code Playgroud)

您还可以添加headers

headers = ["First", "Second", "Third"]
tab = tabulate(df, headers=headers, tablefmt="grid")
Run Code Online (Sandbox Code Playgroud)

然后会生成

+-------------+----------+---------+
| First       |   Second |   Third |
+=============+==========+=========+
| ('A', 'a')  |        2 |       1 |
+-------------+----------+---------+
...
Run Code Online (Sandbox Code Playgroud)