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
我知道如何选择B
为yes
的列或任何其他特定值的行:
df1.loc[df1['B'] == 'yes']
但是如何选择所有不以336
开头的行?
PS:就我而言,3360
和 3365
是字符串。
【问题讨论】:
【参考方案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
【讨论】:
忘了说。您将如何组合两个或多个条件,例如336
和545
?你可以在访问器中使用or
吗?
@CF84 你可以提供一个元组给startswith
。例如,df[~df.B.str.startswith(('112', '336', '556'))]
.以上是关于Pandas:仅当特定列中的值以开头时才选择数据框行的主要内容,如果未能解决你的问题,请参考以下文章
R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]