Python 以字符串形式返回多索引数据帧中的单元格值

Python 以字符串形式返回多索引数据帧中的单元格值,python,pandas,Python,Pandas,我尝试从大约11.000行和10列的数据帧返回单个单元格值: df = pd.DataFrame({ 'A' : ('foo', 'foo', 'bar', 'bar'), 'B' : ('horse', 'car', 'horse', 'car'), 'C' : ('red', 'green', 'blue', 'black')}) df A B C 0 foo horse

我尝试从大约11.000行和10列的数据帧返回单个单元格值:

df = pd.DataFrame({ 'A' : ('foo', 'foo', 'bar', 'bar'),
                    'B' : ('horse', 'car', 'horse', 'car'),
                    'C' : ('red', 'green', 'blue', 'black')})
df
     A      B      C
 0  foo  horse    red
 1  foo    car  green
 2  bar  horse   blue
 3  bar    car  black
我尝试了几个版本的loc,但总是返回一个对象,而不是实际值(“绿色”)。例如:

df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C']
返回:

1    green
Name: C, dtype: object
结果是正确的,但它是作为对象而不是字符串返回的。我还尝试将A列和B列设置为多索引框架中的索引。loc代码更容易,但结果相同


那么,如何才能将值作为字符串而不是对象来获取呢?

您正在获取一个序列,并且您想要第一个对象

您可以将您正在做的事情想象为获得长度为1:
['green']
的列表的pd.Series等价物。如果它是一个列表,您将执行
list[0]

但是,熊猫系列的子集是基于索引的,所以不能这样做。要在不知道序列索引的情况下进行子集,请使用
iloc[0]

df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C'].iloc[0]

'green'
使用:

熊猫系列

item()返回基础数据的第一个元素 作为python标量

输出:

'green'
df.loc[(df['A']='foo')和(df['B']='car'),'C'])。值[0]
将返回
绿色
作为
字符串。
'green'