如何打印没有索引的 pandas DataFrame
- 2025-01-06 08:31:00
- admin 原创
- 22
问题描述:
我想打印整个数据框,但不想打印索引
此外,有一列是日期时间类型,我只想打印时间,而不是日期。
数据框如下所示:
User ID Enter Time Activity Number
0 123 2014-07-08 00:09:00 1411
1 123 2014-07-08 00:18:00 893
2 123 2014-07-08 00:49:00 1041
我希望它打印为
User ID Enter Time Activity Number
123 00:09:00 1411
123 00:18:00 893
123 00:49:00 1041
解决方案 1:
print(df.to_string(index=False))
解决方案 2:
下面这行代码会在打印时隐藏 DataFrame 的索引列
df.style.hide()
解决方案 3:
为了保留“美观的印刷”使用
from IPython.display import HTML
HTML(df.to_html(index=False))
解决方案 4:
print(df.to_csv(sep=' ', index=False))
或者可能:
print(df.to_csv(columns=['A', 'B', 'C'], sep=' ', index=False))
这是有效的,因为df.to_csv
当未提供保存文件路径时会返回一个字符串 - 请参阅文档。
解决方案 5:
如果您想要漂亮地打印数据框,那么您可以使用tabulate包。
import pandas as pd
import numpy as np
from tabulate import tabulate
def pprint_df(dframe):
print tabulate(dframe, headers='keys', tablefmt='psql', showindex=False)
df = pd.DataFrame({'col1': np.random.randint(0, 100, 10),
'col2': np.random.randint(50, 100, 10),
'col3': np.random.randint(10, 10000, 10)})
pprint_df(df)
具体来说,showindex=False
顾名思义,允许您不显示索引。输出如下所示:
+--------+--------+--------+
| col1 | col2 | col3 |
|--------+--------+--------|
| 15 | 76 | 5175 |
| 30 | 97 | 3331 |
| 34 | 56 | 3513 |
| 50 | 65 | 203 |
| 84 | 75 | 7559 |
| 41 | 82 | 939 |
| 78 | 59 | 4971 |
| 98 | 99 | 167 |
| 81 | 99 | 6527 |
| 17 | 94 | 4267 |
+--------+--------+--------+
解决方案 6:
要回答“如何在没有索引的情况下打印数据框”的问题,您可以将索引设置为空字符串数组(数据框中每行一个),如下所示:
blankIndex=[''] * len(df)
df.index=blankIndex
如果我们使用您帖子中的数据:
row1 = (123, '2014-07-08 00:09:00', 1411)
row2 = (123, '2014-07-08 00:49:00', 1041)
row3 = (123, '2014-07-08 00:09:00', 1411)
data = [row1, row2, row3]
#set up dataframe
df = pd.DataFrame(data, columns=('User ID', 'Enter Time', 'Activity Number'))
print(df)
通常会打印出如下内容:
User ID Enter Time Activity Number
0 123 2014-07-08 00:09:00 1411
1 123 2014-07-08 00:49:00 1041
2 123 2014-07-08 00:09:00 1411
通过创建一个包含与数据框中的行数一样多的空字符串的数组:
blankIndex=[''] * len(df)
df.index=blankIndex
print(df)
它将从输出中删除索引:
User ID Enter Time Activity Number
123 2014-07-08 00:09:00 1411
123 2014-07-08 00:49:00 1041
123 2014-07-08 00:09:00 1411
Jupyter Notebooks 中的渲染效果如下图所示:
没有索引列的 Juptyer Notebooks 数据框
解决方案 7:
如果你只是想要打印字符串/json,可以这样解决:
print(df.to_string(index=False))
Buf 如果您也想序列化数据甚至发送到 MongoDB,最好执行以下操作:
document = df.to_dict(orient='list')
目前有 6 种方法可以定位数据,您可以在panda 文档中查看更多更适合您的方法。
解决方案 8:
打印没有索引的 pandas DataFrame 的最简单、最新的方法是
df.style.hide()
文档
解决方案 9:
摘自 kingmakerking 的回答:
当你将单元格更改为 markdown 时,Jupyter Notebook 可以将 GFM Markdown 表格语法转换为表格。
因此,将 tablefmt 更改为“github”而不是“psql”,然后复制并粘贴。
print(tabulate(dframe, headers='keys', tablefmt='github', showindex=False))
(Python 3)
解决方案 10:
在 Jupyter Notebook 上测试并运行:
display(table.hide_index())
解决方案 11:
与上面许多使用 df.to_string(index=False) 的答案类似,我经常发现有必要提取单列值,在这种情况下,您可以使用以下命令使用 .to_string 指定单独的列:
data = pd.DataFrame({'col1': np.random.randint(0, 100, 10),
'col2': np.random.randint(50, 100, 10),
'col3': np.random.randint(10, 10000, 10)})
print(data.to_string(columns=['col1'], index=False)
print(data.to_string(columns=['col1', 'col2'], index=False))
它提供了易于复制(且无需索引)的输出,以便在其他地方(Excel)粘贴使用。示例输出:
col1 col2
49 62
97 97
87 94
85 61
18 55
解决方案 12:
使用df.set_index('User ID')
。它比 简单一些df.style.hide_index()
,而且比将其转换为字符串简单得多。特别是,它比将其转换为 HTML 更简单。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件