如何从熊猫数据框中获取单个值作为字符串

时间:2018-11-12 04:00:19

标签: python pandas numpy

我正在从数据框中查询似乎是'dtype:object'的单个值。我只想按原样打印值,而不打印索引或其他信息。我该怎么做?

col_names = ['Host', 'Port']
df = pd.DataFrame(columns=col_names)
df.loc[len(df)] = ['a', 'b']

t = df[df['Host'] == 'a']['Port']
print(t)

输出: enter image description here

期望的输出: b

3 个答案:

答案 0 :(得分:2)

如果可以保证仅返回一个结果,请使用loc并致电item

>>> df.loc[df['Host'] == 'a', 'Port'].item()
'b'

或者类似地,

>>> df.loc[df['Host'] == 'a', 'Port'].values[0]
'b'

...以获取 first 值(类似,第二个为.values[1])。这比df.loc[df['Host'] == 'a', 'Port'][0]更好,因为如果您的DataFrame看起来像这样,

  Host Port
1    a    b

然后将引发“ KeyError:0” —

df.loc[df['Host'] == 'a', 'Port'][0]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

或者,使用at

>>> df.at[df['Host'].eq('a').idxmax(), 'Port']
'b'

缺点是如果'a'不存在,idxmax将返回第一个索引(并返回错误的结果)。

答案 1 :(得分:1)

它应该简单地工作。.

>>> df
  Host Port
0    a    b
>>> df[df['Host'] == 'a']['Port'][0]   # will choose the first index simply which is 'b'
'b'

或者,与print一起使用,这将去除包围的单个刻度。

>>> print(df[df['Host'] == 'a']['Port'][0])
b

这将更容易,因为即使Port列中有多个值,您也只需选择所需的索引

示例:

>>> df
  Host Port
0    a    b
1    c    c

根据索引寻找不同的ac

>>> df[df['Host'] == 'a']['Port'][0]
'b'
>>> df[df['Host'] == 'c']['Port'][1]
'c'

答案 2 :(得分:1)

正如我的评论中所述,使用[1]之后应该可以起作用,以提取您要查找的变量。

t = df[df['Host'] == 'a']['Port'][1]