Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
258 views
in Technique[技术] by (71.8m points)

python - Print the raw value of a column alone, in pandas?

I have a dataframe:

df = pd.DataFrame([ { 'name': 'george', 'age': 23 }, {'name': 'anna', 'age': 26}])

Now I want to retrive George's age:

df[df.name == 'george'].age

But this outputs some extra information along with the raw value:

0    23
Name: age, dtype: int64

How do I just get it to print 23?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use loc + values for converting Serie to numpy array and then select first value by [0]:

print (df.loc[df.name == 'george', 'age'].values)
[23]
print (df.loc[df.name == 'george', 'age'].values[0])
23

Or simply select first value of Series with iloc:

print (df.loc[df.name == 'george', 'age'].iloc[0])
23

Or select first item by iat:

print (df.loc[df.name == 'george', 'age'].iat[0])
23

Or use Series.item:

print (df.loc[df.name == 'george', 'age'].item())
23

If possible no match value, above solutions failed.

Then is possible use next with iter trick:

print (next(iter(df.loc[df.name == 'george', 'age']),'no match value'))
23

print (next(iter(df.loc[df.name == 'jano z hornej dolnej', 'age']),'no match value'))
no match value

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...