在 pandas 中单独打印一列的原始值?

2024-05-15

我有一个数据框:

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

现在我想检索乔治的年龄:

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

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

0    23
Name: age, dtype: int64

我怎样才能打印它23?


您可以使用loc http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html + values http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.values.html用于转换Serie to numpy array然后选择第一个值[0]:

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

或者简单地选择第一个值Series with iloc http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.iloc.html:

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

或者选择第一项iat http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.iat.html:

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

Or use Series.item http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.item.html:

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

如果可能没有匹配值,则上述解决方案失败。

那么就可以使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas 中单独打印一列的原始值? 的相关文章

随机推荐