Reputation: 7275
I have a dataframe that consist of hundreds of columns, and I need to see all column names.
What I did:
In[37]:
data_all2.columns
The output is:
Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
'government', 'internet', 'isipulsa',
...
'overdue_3months_feature78', 'overdue_3months_feature79',
'overdue_3months_feature80', 'overdue_3months_feature81',
'overdue_3months_feature82', 'overdue_3months_feature83',
'overdue_3months_feature84', 'overdue_3months_feature85',
'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
dtype='object', length=102)
How do I show all columns, instead of a truncated list?
Upvotes: 388
Views: 1038865
Reputation: 1039
You can use one of the belows
print(df.columns.tolist())
print(df_data.columns.values)
print(list(df.columns))
Upvotes: 1
Reputation: 606
If you want to see the all columns in Pandas df.head(), then use this snippet before running your code. All column data will be visible.
pd.set_option('display.max_columns', None)
After this create your dataframe, and try this.
df.head()
It will print the all columns instead of showing "...." in larger dataset.
Upvotes: 25
Reputation: 400
My go-to function to print every column on my console is:
pandas.set_option('display.expand_frame_repr', False)
Upvotes: 3
Reputation: 31
df.head(None)
In this way, you can see all things with a format data frame. You need to write
data_all2.head(None)
Upvotes: 3
Reputation: 11
"df.types" gets all the columns of data frame 'df' as output as rows, and as a side bonus, you will also get the data type.
Upvotes: 1
Reputation: 1437
You can do like this
df.info(show_counts=True)
It will show all the columns. Setting show_counts
to True
shows the count of not_null
data.
Upvotes: 3
Reputation: 21
I may be off the mark but I came to this thread with the same type of problem I found this is the simple answer if you want to see everything in a long list and the index.
This is what I use in Spyder:
print(df.info())
or this be what is needed in Jupyter:
df.info()
Upvotes: 2
Reputation: 893
The accepted answer caused my column names to wrap around. To show all the column names without wrapping, set both display.max_columns and the display.width:
pandas.set_option('display.max_columns', None)
pandas.set_option('display.width', 1000)
Upvotes: 28
Reputation: 21749
You can globally set printing options. I think this should work:
Method 1:
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
Method 2:
pd.options.display.max_columns = None
pd.options.display.max_rows = None
This will allow you to see all column names & rows when you are doing .head()
. None of the column name will be truncated.
If you just want to see the column names you can do:
print(df.columns.tolist())
Upvotes: 683
Reputation: 565
The easiest way I've found is just
list(df.columns)
Personally I wouldn't want to change the globals, it's not that often I want to see all the columns names.
Upvotes: 9
Reputation: 143
Not a conventional answer, but I guess you could transpose the dataframe to look at the rows instead of the columns. I use this because I find looking at rows more 'intuitional' than looking at columns:
data_all2.T
This should let you view all the rows. This action is not permanent, it just lets you view the transposed version of the dataframe.
If the rows are still truncated, just use print(data_all2.T)
to view everything.
Upvotes: 6
Reputation: 1446
This will do the trick. Note the use of display()
instead of print.
with pd.option_context('display.max_rows', 5, 'display.max_columns', None):
display(my_df)
EDIT:
The use of display
is required because pd.option_context
settings only apply to display
and not to print
.
Upvotes: 52
Reputation: 154
you can try this
pd.pandas.set_option('display.max_columns', None)
Upvotes: 4
Reputation: 4267
I know it is a repetition but I always end up copy pasting and modifying YOLO's answer:
pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Upvotes: 2
Reputation: 11
I had lots of duplicate column names, and once I ran
df = df.loc[:,~df.columns.duplicated()]
I was able to see the full list of columns
Credit: https://stackoverflow.com/a/40435354/5846417
Upvotes: 1
Reputation: 101
What worked for me was the following:
pd.options.display.max_seq_items = None
You can also set it to an integer larger than your number of columns.
Upvotes: 10
Reputation: 1997
To obtain all the column names of a DataFrame, df_data
in this example, you just need to use the command df_data.columns.values
.
This will show you a list with all the Column names of your Dataframe
Code:
df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)
Output:
['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']
Upvotes: 85
Reputation: 520
In the interactive console, it's easy to do:
data_all2.columns.tolist()
Or this within a script:
print(data_all2.columns.tolist())
Upvotes: 19
Reputation: 439
To get all column name you can iterate over the data_all2.columns
.
columns = data_all2.columns
for col in columns:
print col
You will get all column names. Or you can store all column names to another list variable and then print list.
Upvotes: 3
Reputation: 441
A quick and dirty solution would be to convert it to a string
print('\t'.join(data_all2.columns))
would cause all of them to be printed out separated by tabs Of course, do note that with 102 names, all of them rather long, this will be a bit hard to read through
Upvotes: 2
Reputation: 1281
If you just want to see all the columns you can do something of this sort as a quick fix
cols = data_all2.columns
now cols will behave as a iterative variable that can be indexed. for example
cols[11:20]
Upvotes: 1