我正在尝试从大约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,但总是得到一个返回的对象,而不是实际的值('green')。例如:
df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C']
返回:
1 green
Name: C, dtype: object
结果是正确的,但它作为对象返回,而不是作为字符串返回。我还尝试将列A和B设置为多索引帧中的索引。然后,loc代码更容易,但结果相同。
那么如何将值作为字符串而不是作为对象获取?
答案 0 :(得分:0)
你正在推出一个系列,你想要第一个对象。
你可以想到你正在做什么,因为获得pd.Series相当于长度为1的列表:['green']
。如果是列表,您可以list[0]
。
但是,pandas系列子集基于索引,所以你不能这样做。要在不知道系列索引的情况下使用iloc[0]
:
df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C'].iloc[0]
'green'
答案 1 :(得分:0)
使用item
:
pandas.Series.item
Series.item()返回基础数据的第一个元素 作为python标量
df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C'].item()
输出:
'green'