Python 以字符串形式返回多索引数据帧中的单元格值
我尝试从大约11.000行和10列的数据帧返回单个单元格值: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
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'