熊猫通过多个条件返回一列的值?

时间:2021-02-17 18:29:52

标签: python pandas

我正在使用来自 here 的这个示例:

假设我有以下数据框:

>>> import pandas as pd
df=pd.DataFrame({'Name':['JOHN','ALLEN','BOB','NIKI','CHARLIE','CHANG'],
              'Age':[35,42,63,29,47,51],
              'Salary_in_1000':[100,93,78,120,64,115],
             'FT_Team':['STEELERS','SEAHAWKS','FALCONS','FALCONS','PATRIOTS','STEELERS']})
>>> df=pd.DataFrame({'Name':['JOHN','ALLEN','BOB','NIKI','CHARLIE','CHANG'],
...               'Age':[35,42,63,29,47,51],
...               'Salary_in_1000':[100,93,78,120,64,115],
...              'FT_Team':['STEELERS','SEAHAWKS','FALCONS','FALCONS','PATRIOTS','STEELERS']})
>>> df
      Name  Age  Salary_in_1000   FT_Team
0     JOHN   35             100  STEELERS
1    ALLEN   42              93  SEAHAWKS
2      BOB   63              78   FALCONS
3     NIKI   29             120   FALCONS
4  CHARLIE   47              64  PATRIOTS
5    CHANG   51             115  STEELERS

假设我想找到 Name='John' 和 Age=35 的薪水,即 100。当我在循环中调用时,执行此查询的最有效方法是什么。这就是我正在做的事情,它似乎返回一个 类型的值。谢谢!

>>> val=df.loc[( (df['Age']== 35) & (df['Name']=="JOHN"))][['Salary_in_1000']]
>>> val
   Salary_in_1000
0             100
>>> type(val)
<class 'pandas.core.frame.DataFrame'>

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容。这将为您提供价值...

val=df.loc[( (df['Age']== 35) & (df['Name']=="JOHN"))][['Salary_in_1000']]

答案 1 :(得分:0)

这里的语法是错误的。使用

val=df.loc[(df['Age']== 35) & (df['Name']=="JOHN"), 'Salary_in_1000']

val=df[(df['Age']== 35) & (df['Name']=="JOHN")]['Salary_in_1000']