数据框中的单个列的多个条件,pandas

时间:2017-09-12 15:48:09

标签: python pandas

我正在尝试从单个数据框列中选择一个子集,我需要帮助在单个列上应用两个条件。例如,如何在下表中选择“Tom”和“Chris”?

import pandas as pd
dic={"Name":["Chris","Tom","Steven"], "Age":[12,34,55]}
dic={"Name":["Chris","Tom","Steven"], "Age":[12,34,55]}
df=pd.DataFrame(dic)
df[df["Name"]=="Tom"]

为什么我用的时候呢?       df[df["Name"]==("Chris" or "Tom")] 它选择了“克里斯,但是何时或被替换为”,“汤姆”被选中了?

1 个答案:

答案 0 :(得分:2)

当我们检查condition1 OR condition2时 - 如果第一个条件/操作数是True就足够了,所以如果第一个是真,那么第二个是检查(因为它足以拥有一个True):

In [247]: 1 or 2
Out[247]: 1

对于AND我们必须检查第二个,如果第一个是True(因为所有条件必须是True):

In [248]: 1 and 2
Out[248]: 2

但如果第一个条件是False,我们就不需要检查第二个条件(因为它足以让False - 它会让整体"事情" False):

In [250]: 0 and 1
Out[250]: 0

相同的逻辑将应用于字符串(注意:空字符串将被评估为False):

In [242]: ("Chris" or "Tom")
Out[242]: 'Chris'

In [249]: ("Chris" and "Tom")
Out[249]: 'Tom'

所以当你这样做时

df[df["Name"]==("Chris" or "Tom")]

它与:

相同
df[df["Name"]=="Chris"]

如何正确地做到这一点(用熊猫的方式)

In [243]: df[df["Name"].isin(["Chris","Tom"])]
Out[243]:
   Age   Name
0   12  Chris
1   34    Tom