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

Oam*_*nji 21 python numpy pandas

我正在从我的数据框中查询一个似乎是“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)
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

预期产出:b

cs9*_*s95 37

如果您可以保证只返回一个结果,请使用loc并调用item

>>> df.loc[df['Host'] == 'a', 'Port'].item()
'b'
Run Code Online (Sandbox Code Playgroud)

或者,类似地,

>>> df.loc[df['Host'] == 'a', 'Port'].values[0]
'b'
Run Code Online (Sandbox Code Playgroud)

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

  Host Port
1    a    b
Run Code Online (Sandbox Code Playgroud)

然后会抛出“KeyError: 0”——

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

或者,使用at

>>> df.at[df['Host'].eq('a').idxmax(), 'Port']
'b'
Run Code Online (Sandbox Code Playgroud)

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

  • `FutureWarning:'item' 已被弃用,并将在未来版本中删除` (2认同)

Jav*_*avi 7

t = df['Host'].values[0] 
Run Code Online (Sandbox Code Playgroud)

会给你第一个值。如果您需要字符串,只需执行以下操作:

t = str(df['Host'].values[0])
Run Code Online (Sandbox Code Playgroud)