user2629628
user2629628

Reputation: 141

How can I output the "Name" value in pandas?

After I do an iloc (df.iloc[3]) , I get an output with all the column names and their values for a given row.

What should the code be if I only want to out put the "Name" value for the same row?

Eg:

Columns 1           Value 1
Columns 2           Value 2
Name: Row 1, dtype: object

So, in this case "Row 1".

Upvotes: 0

Views: 1378

Answers (2)

yongsop
yongsop

Reputation: 11

df.iloc is a series

df.iloc['3'].name will return the name

Example:

>> df=pd.DataFrame({'data': [100,200]})
>> df=df.set_index(pd.Index(['A','B']))
>> df.iloc[1]
data    200
Name: B, dtype: int64

>> df.iloc[1].name
'B'

Upvotes: 1

nikhilbalwani
nikhilbalwani

Reputation: 930

>>> df = pd.DataFrame({'Name': ['Uncle', 'Sam', 'Martin', 'Jacob'], 'Salary': [1000, 2000, 3000, 1500]})
>>> df
     Name  Salary
0   Uncle    1000
1     Sam    2000
2  Martin    3000
3   Jacob    1500

df.iloc[3] gives the following:

>>> df.iloc[3]
Name      Jacob
Salary     1500
Name: 3, dtype: object

However, df.iloc[3, 'Name'] throws the following exception:

>>> df.iloc[3, 'Name']
Traceback (most recent call last):
  File "/home/nikhil/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py", line 235, in _has_valid_tuple
    self._validate_key(k, i)
  File "/home/nikhil/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py", line 2035, in _validate_key
    "a [{types}]".format(types=self._valid_types)
ValueError: Can only index by location with a [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/nikhil/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py", line 1418, in __getitem__
    return self._getitem_tuple(key)
  File "/home/nikhil/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py", line 2092, in _getitem_tuple
    self._has_valid_tuple(tup)
  File "/home/nikhil/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py", line 239, in _has_valid_tuple
    "[{types}] types".format(types=self._valid_types)
ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types

Use df.loc[3, 'Name'] instead:

>>> df.loc[3, 'Name']
'Jacob'

Upvotes: 1

Related Questions