熊猫:如何用某个词选择行

时间:2018-03-02 16:24:56

标签: python regex string pandas

如何只显示文字中包含* AV *例如' AV Snow'等字的行。或者' AV(一些)'或者'我AV'

# Select Structural status = 'AVAILABLE' or like *AV*
value_list = ['AVAILABLE', '[AV]']

' [AV]'似乎不正确

# Grab DataFrame rows where column has certain values
new_df = df[df.STRUCTURALSTATUS.isin(value_list)]
new_df.shape

2 个答案:

答案 0 :(得分:2)

这是一种方式。

<强>解决方案

import pandas as pd

df = pd.DataFrame({'A': ['AV', 'AV Snow', 'Test', 'AV (Some)',
                         'Nothing', 'Me AV', 'Available', 'NA']})

df = df[df['A'].str.contains('AV', regex=False, case=False, na=False)]

<强>结果

           A
0         AV
1    AV Snow
3  AV (Some)
5      Me AV
6  Available

<强>解释

  • regex=False禁用正则表达式,因为您的特定任务不需要它。
  • case=False使搜索案例不敏感。
  • na=False表示如果系列中存在异常类型,您将看不到错误,例如非字符串。

答案 1 :(得分:0)

如果您想使用正则表达式模式,可能需要在系列上使用str.contains来过滤DataFrame。然后,您可以在结果上应用带有isin函数的列表。

示例:

df[df.STRUCTURALSTATUS.str.contains('[AV]')]