单独打印列的原始值,用pandas?

cgvd09ve  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(288)

我有一个Dataframe:

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

现在我想回顾一下乔治的年龄:

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

但这会输出一些额外的信息以及原始值:

0    23
Name: age, dtype: int64

我怎么才能把它打印出来 23 ?

7nbnzgx9

7nbnzgx91#

你可以用 loc + values 用于转换 Serienumpy array 然后选择第一个值 [0] :

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

或者简单地选择 Seriesiloc :

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

或按选择第一项 iat :

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

或使用 Series.item :

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

如果可能没有匹配值,则上述解决方案失败。
那是可能的用途 nextiter 技巧:

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
idfiyjo8

idfiyjo82#

不妨给我的评论一个答案:

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

int(df[df.name == 'george'].age)

应该有用

8ulbf1ek

8ulbf1ek3#

df = [ { 'name': 'george', 'age': 23 }, {'name': 'anna', 'age': 26}]
k = [x['age'] for x in df if x['name'] == 'george']
print k

相关问题