Pandas:仅当特定列中的值以值开头时才选择数据帧行

时间:2017-02-14 18:30:03

标签: python pandas dataframe slice

我有以下数据框df1

    X           Y           A       B
0   484         408         10      3360
1   478         415         24      3365
2   504         452         31      yes
3   613         551         33      maybe
4   663         665         39      no

我知道如何选择B列为yes的行或任何其他特定值:

df1.loc[df1['B'] == 'yes']

但是如何选择不开始}的所有行?

PS:就我而言,3363360是字符串。

1 个答案:

答案 0 :(得分:4)

我会使用df[~df.B.str.startswith('336')]访问者来使用类似str的内容。例如,

>>> df = pd.DataFrame({'B': ['3360', '3365', 'yes', 'maybe', 'no']})
>>> df[~df.B.str.startswith('336')]
       B
2    yes
3  maybe
4     no

如果要检查多个字符串,startswith会接受一组前缀。

>>> df[~df.B.str.startswith(('112', '336', 'n'))]
       B
2    yes
3  maybe