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

Posted

技术标签:

【中文标题】Pandas:仅当特定列中的值以开头时才选择数据框行【英文标题】:Pandas: select dataframe rows only if the values in a specific column start with 【发布时间】:2017-07-03 04:27:13 【问题描述】:

我有以下数据框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

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

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

但是如何选择所有不以336开头的行?

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

【问题讨论】:

【参考方案1】:

我会使用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

【讨论】:

忘了说。您将如何组合两个或多个条件,例如336545?你可以在访问器中使用or 吗? @CF84 你可以提供一个元组给startswith。例如,df[~df.B.str.startswith(('112', '336', '556'))].

以上是关于Pandas:仅当特定列中的值以开头时才选择数据框行的主要内容,如果未能解决你的问题,请参考以下文章

仅当 Pandas 中的值为空/空时才合并

Pandas:更改通过列中的布尔索引选择的值而不会收到警告

R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]

如何通过在两行之间划分特定列中的值并保持其他列不变来在熊猫数据框中创建新行?

将 2 列中的值合并为 pandas 数据框中的单列

根据其他列中的值在 python 3 (pandas) 数据框中创建新列