And*_*Zhu 86 python dataframe pandas
我有点卡在另一个变量上提取一个变量条件的值.例如,以下数据帧:
A B
p1 1
p1 2
p3 3
p2 4
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得A
何时的价值B=3
?每当我提取值时A
,我得到一个对象,而不是一个字符串.
Ant*_*pov 138
您可以使用loc
获得满足您条件的系列,然后iloc
获得第一个元素:
In [2]: df
Out[2]:
A B
0 p1 1
1 p1 2
2 p3 3
3 p2 4
In [3]: df.loc[df['B'] == 3, 'A']
Out[3]:
2 p3
Name: A, dtype: object
In [4]: df.loc[df['B'] == 3, 'A'].iloc[0]
Out[4]: 'p3'
Run Code Online (Sandbox Code Playgroud)
Phi*_*ang 25
您可以尝试query
,这是更少的输入:
df.query('B==3')['A']
Run Code Online (Sandbox Code Playgroud)
用这些术语来思考对我来说更容易,但可以借鉴其他答案。您想要的值位于系列中:
df[*column*][*row*]
Run Code Online (Sandbox Code Playgroud)
其中column和row指向您要返回的值。对于您的示例,列是“A”,对于行,您使用掩码:
df['B'] == 3
Run Code Online (Sandbox Code Playgroud)
要从系列中获取第一个匹配值,有几个选项:
df['A'][df['B'] == 3].values[0]
df['A'][df['B'] == 3].iloc[0]
df['A'][df['B'] == 3].to_numpy()[0]
Run Code Online (Sandbox Code Playgroud)