Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.to_markdown

DataFrame.to_markdown(buf=None, *, mode='wt', index=True, storage_options=None, **kwargs)

  Print DataFrame in Markdown-friendly format.

  Parameters:
    buf str, Path or StringIO-like, optional, default None

      Buffer to write to. If None, the output is returned as a string.

    mode str, optional

      Mode in which file is opened, “wt” by default.

    index bool, optional, default True

      Add index (row) labels.

    storage_options dict, optional

      Extra options that make sense for a particular storage connection, e.g. host, port, username, password, etc. For HTTP(S) URLs the key-value pairs are forwarded to `urllib.request.Request` as header options. For other URLs (e.g. starting with “s3://”, and “gcs://”) the key-value pairs are forwarded to `fsspec.open`. Please see `fsspec` and `urllib` for more details, and for more examples on storage options refer here.

    **kwargs

      These parameters will be passed to tabulate.

  Returns:
    str

      DataFrame in Markdown-friendly format.

  See also

  `DataFrame.to_html`

    Render DataFrame to HTML-formatted table.

  `DataFrame.to_latex`

    Render DataFrame to LaTeX-formatted table.

  Notes

  Requires the tabulate package.

  Examples

      >>> df = pd.DataFrame(
      ...     data={"animal_1": ["elk", "pig"], "animal_2": ["dog", "quetzal"]}
      ... )
      >>> print(df.to_markdown())
      |    | animal_1   | animal_2   |
      |---:|:-----------|:-----------|
      |  0 | elk        | dog        |
      |  1 | pig        | quetzal    |

  Output markdown with a tabulate option.

      >>> print(df.to_markdown(tablefmt="grid"))
      +----+------------+------------+
      |    | animal_1   | animal_2   |
      +====+============+============+
      |  0 | elk        | dog        |
      +----+------------+------------+
      |  1 | pig        | quetzal    |
      +----+------------+------------+