I want to print the whole dataframe, but I don’t want to print the index
Besides, one column is datetime type, I just want to print time, not date.
The dataframe looks like:
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
I want it print as
User ID Enter Time Activity Number 123 00:09:00 1411 123 00:18:00 893 123 00:49:00 1041
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
python 2.7
print df.to_string(index=False)
python 3
print(df.to_string(index=False))
Method 2
The line below would hide the index column of DataFrame when you print
df.style.hide_index()
Update: tested w Python 3.7
Method 3
print(df.to_csv(sep='t', index=False))
Or possibly:
print(df.to_csv(columns=['A', 'B', 'C'], sep='t', index=False))
Method 4
To retain “pretty-print” use
from IPython.display import HTML HTML(df.to_html(index=False))
Method 5
If you want to pretty print the data frames, then you can use tabulate package.
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)
Specifically, the showindex=False, as the name says, allows you to not show index. The output would look as follows:
+--------+--------+--------+ | 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 | +--------+--------+--------+
Method 6
To answer the “How to print dataframe without an index” question, you can set the index to be an array of empty strings (one for each row in the dataframe), like this:
blankIndex=[''] * len(df) df.index=blankIndex
If we use the data from your post:
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)
which would normally print out as:
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
By creating an array with as many empty strings as there are rows in the data frame:
blankIndex=[''] * len(df) df.index=blankIndex print(df)
It will remove the index from the output:
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
And in Jupyter Notebooks would render as per this screenshot:
Juptyer Notebooks dataframe with no index column
Method 7
If you just want a string/json to print it can be solved with:
print(df.to_string(index=False))
Buf if you want to serialize the data too or even send to a MongoDB, would be better to do something like:
document = df.to_dict(orient='list')
There are 6 ways by now to orient the data, check more in the panda docs which better fits you.
Method 8
Anyone working on Jupyter Notebook to print DataFrame without index column, this worked for me:
display(table.hide_index())
Method 9
Taking from kingmakerking’s answer:
Jupyter notebook can convert GFM Markdown table syntax into a table when you change the cell to markdown.
So, change tablefmt to ‘github’ instead of ‘psql’ and copy and paste.
print(tabulate(dframe, headers='keys', tablefmt='github', showindex=False))
Method 10
Similar to many of the answers above that use df.to_string(index=False), I often find it necessary to extract a single column of values in which case you can specify an individual column with .to_string using the following:
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))
Which provides an easy to copy (and index free) output for use pasting elsewhere (Excel). Sample output:
col1 col2 49 62 97 97 87 94 85 61 18 55
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

