如何打印熊猫DataFrame没有索引

我想打印整个数据框架,但我不想打印索引

另外,其中一列是datetime类型,我只想打印时间,而不是日期。

数据框架看起来像这样:

   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
457574 次浏览
print(df.to_csv(sep='\t', index=False))

或者是:

print(df.to_csv(columns=['A', 'B', 'C'], sep='\t', index=False))
print(df.to_string(index=False))

如果你只是想打印一个字符串/json,可以用:

print(df.to_string(index=False))

Buf如果你想序列化数据,甚至发送到MongoDB,最好这样做:

document = df.to_dict(orient='list')

现在有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笔记本将渲染如下截图: 没有索引列的Juptyer笔记本数据框架 < / p >

如果你想漂亮地打印数据帧,那么你可以使用汇总包。

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 |
+--------+--------+--------+

打印时,下面的行将隐藏DataFrame的索引列

df.style.hide_index()

类似于上面使用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

保持“漂亮的印刷”的使用

from IPython.display import HTML
HTML(df.to_html(index=False))

enter image description here

任何人在Jupyter Notebook上打印没有索引列的DataFrame,这对我有用:

display(table.hide_index())

选自国王的回答:

当您将单元格更改为Markdown时,Jupyter笔记本可以将GFM Markdown表语法转换为表。

所以,改变tablefmt到'github'而不是'psql'和复制粘贴。

    print(tabulate(dframe, headers='keys', tablefmt='github', showindex=False))


< p > (Python 3) enter image description here < / p >