Python 如何在没有索引的情况下打印数据帧

Python 如何在没有索引的情况下打印数据帧,python,datetime,pandas,dataframe,Python,Datetime,Pandas,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

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

另外,有一列是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
或者可能:

print(df.to_csv(columns=['A', 'B', 'C'], sep='\t', index=False))
python 2.7
将df.打印到字符串(index=False)
python 3
打印(df.to_字符串(index=False))

如果您只想打印字符串/json,可以通过以下方法解决:

打印(df.to_字符串(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中,笔记本电脑将按照以下屏幕截图进行渲染:

如果您想漂亮地打印数据帧,那么可以使用package

具体来说,
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()

更新:tested w Python 3.7

与上面使用df.to_字符串(index=False)的许多答案类似,我经常发现有必要提取一列值,在这种情况下,您可以使用以下命令使用.to_字符串指定单个列:

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
要保留“漂亮打印”,请使用


任何使用Jupyter笔记本打印数据帧而不使用索引列的人,这对我来说都很有用:

display(table.hide_index())

摘自kingmakerking的答案:

当您将单元格更改为标记时,Jupyter notebook可以将GFM标记表语法转换为表

因此,将tablefmt改为'github'而不是'psql',然后进行复制和粘贴

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

(Python 3)

您使用的术语(“数据帧”、“索引”)让我觉得您实际上是在使用R,而不是Python。请澄清。无论如何,我们需要查看打印此“数据帧”的现有代码,以便有机会提供帮助。请阅读并按照以下说明操作。。。我会说,如果这实际上是Python,并且第二列中的对象是
datetime.datetime
对象,那么您可以使用该方法,使用适当的格式字符串(可能是
%H:%M:%S”
)打印时间。@Zack:
DataFrame
pandas
中的二维数据结构的名称,一个流行的Python数据分析库。这很好,但是它不再包含sep选项卡,这在复制到时是一个障碍excel@Rockbar如果您想复制/导出到excel,您应该使用
df.to_csv
。对于我来说,列标签显示出来时与数据不对齐(开始处缺少空格)。可能是因为我的数据比列标签占用更多的字符。添加参数justify='left'可以修复此问题,但显然会更改列标签的对齐方式。您也可以使用
df.to_clipboard()
,然后粘贴到Excel中。用于处理Windows愚蠢的“无法编辑打开的文档”BS.
df.to\u excel('filename.xlsx',index=False)
这怎么可能,因为DataFrame.to\u csv没有返回值?我没有打印出来。事实上,OP要求打印。此注释不会打印数据框,而是将其保存为CSV。需要jinja2软件包,并且不会使用Python 3.7生成所需的输出。我发现在制作报告时,将此答案复制/粘贴到表中最有效,谢谢!我最喜欢这个答案-使用Python 3.8生成正确的输出,并且无需打印数据帧(对于Jupyter笔记本/实验室应用程序很有用),尽管有点奇怪,但这是IMO的最佳解决方案。这真的是最好的现代解决方案吗?这非常完美,谢谢。笔记本中仍然显示一个清晰的数据框,没有索引列。这正是我想要的。仅供参考,HTML不会显示在REPL输出中
col1  col2    
49    62    
97    97    
87    94    
85    61    
18    55
from IPython.display import HTML
HTML(df.to_html(index=False))
    print(tabulate(dframe, headers='keys', tablefmt='github', showindex=False))