最初,您可以简单地在Pandas DataFrame对象的to_latex方法中传递参数.现在,您会收到一条关于签名更改的警告消息.例子:

>>> import pandas as pd

>>> import numpy as np

>>> data = {f'Column {i + 1}': np.random.randint(0, 10, size=(10, )) for i in range(5)}

>>> df = pd.DataFrame(data)

>>> df
   Column 1  Column 2  Column 3  Column 4  Column 5
0         1         8         3         3         5
1         8         6         7         7         3
2         2         1         6         1         1
3         9         7         9         5         5
4         5         4         7         8         9
5         9         5         3         6         2
6         6         9         9         6         8
7         8         7         2         6         5
8         4         9         4         6         2
9         2         6         5         3         0

>>> lat_og = df.to_latex(index=False)
<ipython-input-7-986346043a05>:1: FutureWarning: In future versions `DataFrame.to_latex` is expected to utilise the base implementation of `Styler.to_latex` for formatting and rendering. The arguments signature may therefore change. It is recommended instead to use `DataFrame.style.to_latex` which also contains additional functionality.
  lat_og = df.to_latex(index=False)

>>> print(lat_og)
\begin{tabular}{rrrrr}
\toprule
 Column 1 &  Column 2 &  Column 3 &  Column 4 &  Column 5 \\
\midrule
        1 &         8 &         3 &         3 &         5 \\
        8 &         6 &         7 &         7 &         3 \\
        2 &         1 &         6 &         1 &         1 \\
        9 &         7 &         9 &         5 &         5 \\
        5 &         4 &         7 &         8 &         9 \\
        9 &         5 &         3 &         6 &         2 \\
        6 &         9 &         9 &         6 &         8 \\
        8 &         7 &         2 &         6 &         5 \\
        4 &         9 &         4 &         6 &         2 \\
        2 &         6 &         5 &         3 &         0 \\
\bottomrule
\end{tabular}

您可以在没有索引列的情况下获得所需的输出,但如果它会发生变化,或者如果我必须连续使用import warnings来修复它,我不想继续使用它.

警告消息建议使用style属性.如何使用style属性忽略索引列?我阅读了与style属性相关联的to_latex方法的文档,但它没有如上所述的简单参数.例子:

>>> lat_new = df.style.to_latex(hrules=True)

>>> print(lat_new)
\begin{tabular}{lrrrrr}
\toprule
 & Column 1 & Column 2 & Column 3 & Column 4 & Column 5 \\
\midrule
0 & 1 & 8 & 3 & 3 & 5 \\
1 & 8 & 6 & 7 & 7 & 3 \\
2 & 2 & 1 & 6 & 1 & 1 \\
3 & 9 & 7 & 9 & 5 & 5 \\
4 & 5 & 4 & 7 & 8 & 9 \\
5 & 9 & 5 & 3 & 6 & 2 \\
6 & 6 & 9 & 9 & 6 & 8 \\
7 & 8 & 7 & 2 & 6 & 5 \\
8 & 4 & 9 & 4 & 6 & 2 \\
9 & 2 & 6 & 5 & 3 & 0 \\
\bottomrule
\end{tabular}

索引列在latex 中.有哪些方法可以在不使用原始方法的情况下删除索引列?

Edit

如果您遇到这个问题,请知道pandas开发人员计划不推荐DataFrame.to_latex()方法.他们目前正在使用Styler.to_latex()方法.到目前为止,签名并不相同,需要其他方法来隐藏索引列或转义latex语法.有关此过程的更多最新更新,请参见41649,兔子洞的开始请参见44411.他们计划在Pandas 2.0中修复这个问题.

推荐答案

可以使用Pandas 数据帧style属性的hide()方法.以下代码将生成一个没有索引值的LaTeX表:

import pandas as pd
import numpy as np

data = {f'Column {i + 1}': np.random.randint(0, 10, size=(10, )) for i in range(5)}
df = pd.DataFrame(data)
lat_new = df.style.hide(axis="index").to_latex(hrules=True)
print(lat_new)

结果如下:

\begin{tabular}{rrrrr}
\toprule
Column 1 & Column 2 & Column 3 & Column 4 & Column 5 \\
\midrule
2 & 5 & 9 & 2 & 2 \\
2 & 6 & 0 & 9 & 5 \\
3 & 2 & 4 & 3 & 2 \\
8 & 9 & 3 & 7 & 8 \\
5 & 9 & 7 & 4 & 4 \\
0 & 3 & 2 & 2 & 6 \\
5 & 7 & 7 & 8 & 6 \\
2 & 2 & 9 & 3 & 3 \\
6 & 0 & 0 & 9 & 2 \\
4 & 8 & 7 & 5 & 9 \\
\bottomrule
\end{tabular}

Python相关问答推荐

删除所有列值,但判断是否存在任何二元组

C#使用程序从Python中执行Exec文件

使用密钥字典重新配置嵌套字典密钥名

Scrapy和Great Expectations(great_expectations)—不合作

mypy无法推断类型参数.List和Iterable的区别

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

如何在PySide/Qt QColumbnView中删除列

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

在极中解析带有数字和SI前缀的字符串

如何使用使用来自其他列的值的公式更新一个rabrame列?

Polars map_使用多处理对UDF进行批处理

Pandas—堆栈多索引头,但不包括第一列

将一个双框爆炸到另一个双框的范围内

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

将字节序列解码为Unicode字符串

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

利用广播使减法更有效率

更新包含整数范围的列表中的第一个元素

安装PyTorch时出现CondaVerificationError

在行数据为向量的DataFrame上计算逐行更改