user1911092
user1911092

Reputation: 4241

No Column Names in pandas python

Basic question on a pandas dataframe. I have a 1x1 dataframe with a datapoint and there are no column headers (currently). df[0,0] does not work because I think it is expecting a column name. In addition, df.0 doesn't work nor df[0,'']. df.ix[0,0] does work.

In general, am I required to have a column name? Is it a best practice to use column names with pandas dataframes? If my sql query does not have column headers, is it best to add them at that point?

Thanks for the help.

Upvotes: 15

Views: 72022

Answers (1)

Aman
Aman

Reputation: 47229

Nope, you're not required to assign column names, nor do you need them to access any element.

In [12]: df = pd.DataFrame([0])

In [13]: df.ix[0,0]
Out[13]: 0

In [14]: df[0][0]
Out[14]: 0

In fact, you can think of the column already having a name -- it is the integer 0. Look at what happens when you provide a name

In [15]: df    #Before naming the column
Out[15]:
   0
0  0

In [16]: df.columns = ['ColA']
In [17]: df    #Renamed
Out[17]:
   ColA
0     0

In [18]: df['ColA'][0]    #Now you can access the column using the new name
Out[18]: 0

In [19]: df[0][0]         #... but trying the old name will not work
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

KeyError: 'no item named 0'

You can still use DataFrame.ix just as before, though:

In [20]: df.ix[0,0]
Out[20]: 0

Upvotes: 15

Related Questions