我有一个Dataframe:
df = pd.DataFrame([ { 'name': 'george', 'age': 23 }, {'name': 'anna', 'age': 26}])
现在我想回顾一下乔治的年龄:
df[df.name == 'george'].age
但这会输出一些额外的信息以及原始值:
0 23 Name: age, dtype: int64
我怎么才能把它打印出来 23 ?
23
7nbnzgx91#
你可以用 loc + values 用于转换 Serie 至 numpy array 然后选择第一个值 [0] :
loc
values
Serie
numpy array
[0]
print (df.loc[df.name == 'george', 'age'].values) [23] print (df.loc[df.name == 'george', 'age'].values[0]) 23
或者简单地选择 Series 与 iloc :
Series
iloc
print (df.loc[df.name == 'george', 'age'].iloc[0]) 23
或按选择第一项 iat :
iat
print (df.loc[df.name == 'george', 'age'].iat[0]) 23
或使用 Series.item :
Series.item
print (df.loc[df.name == 'george', 'age'].item()) 23
如果可能没有匹配值,则上述解决方案失败。那是可能的用途 next 与 iter 技巧:
next
iter
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
idfiyjo82#
不妨给我的评论一个答案:
df[df.name == 'george'].age.values[0]
或
int(df[df.name == 'george'].age)
应该有用
8ulbf1ek3#
df = [ { 'name': 'george', 'age': 23 }, {'name': 'anna', 'age': 26}] k = [x['age'] for x in df if x['name'] == 'george'] print k
3条答案
按热度按时间7nbnzgx91#
你可以用
loc
+values
用于转换Serie
至numpy array
然后选择第一个值[0]
:或者简单地选择
Series
与iloc
:或按选择第一项
iat
:或使用
Series.item
:如果可能没有匹配值,则上述解决方案失败。
那是可能的用途
next
与iter
技巧:idfiyjo82#
不妨给我的评论一个答案:
或
应该有用
8ulbf1ek3#