Remove name, dtype from pandas output of dataframe or series

Question:

I have output file like this from a pandas function.

Series([], name: column, dtype: object)
311     race
317     gender
Name: column, dtype: object

I’m trying to get an output with just the second column, i.e.,

race
gender

by deleting top and bottom rows, first column. How do I do that?

Asked By: pam

||

Answers:

You want just the .values attribute:

In [159]:

s = pd.Series(['race','gender'],index=[311,317])
s
Out[159]:
311      race
317    gender
dtype: object
In [162]:

s.values
Out[162]:
array(['race', 'gender'], dtype=object)

You can convert to a list or access each value:

In [163]:

list(s)
Out[163]:
['race', 'gender']

In [164]:

for val in s:
    print(val)
race
gender
Answered By: EdChum

DataFrame/Series.to_string

These methods have a variety of arguments that allow you configure what, and how, information is displayed when you print. By default Series.to_string has name=False and dtype=False, so we additionally specify index=False:

s = pd.Series(['race', 'gender'], index=[311, 317])

print(s.to_string(index=False))
#   race
# gender

If the Index is important the default is index=True:

print(s.to_string())
#311      race
#317    gender

Series.str.cat

When you don’t care about the index and just want the values left justified cat with a 'n'. Values need to be strings, so convert first if necessary.

#s = s.astype(str)

print(s.str.cat(sep='n'))
#race
#gender
Answered By: ALollz

Sometimes I do print(*s, sep='n'):

s = pd.Series(['race', 'gender'], index=[311, 317])
print(*s, sep='n')

gives

race
gender
Answered By: user66081