打印pandas中某一列的原始值?

2024-05-23 14:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框:

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

现在我想重审乔治的年龄:

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

但这会输出一些附加信息和原始值:

0    23
Name: age, dtype: int64

我怎么才能让它打印出来?


Tags: 数据name信息dataframedfagepddtype
3条回答

不妨让我的评论成为一个答案:

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

或者

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

应该有用

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

您可以使用^{}+^{}Serie转换为numpy array,然后通过[0]选择第一个值:

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

或者只需使用^{}选择Series的第一个值:

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

或按^{}选择第一项:

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

或者使用^{}

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

相关问题 更多 >