Pandas系列:根据另一个系列的值选择行int系列

时间:2017-02-20 13:55:04

标签: python pandas

我有两个像这样的字符串系列

>>> a = pd.Series(['a','b','c'])
>>> b = pd.Series(['bb', 'a', 'dd', 'ee'])
>>> a
0    a
1    b
2    c
dtype: object
>>> b
0    bb
1     a
2    dd
3    ee
dtype: object

如果我想选择' a'匹配' b'中的确切行我会用这个:

>>> a.loc[a.isin(b)]
0    a
dtype: object

但是如何在' a'中选择所有行/字符串?这是' b'中的子字符串?我想得到这个:

0    a
1    b

2 个答案:

答案 0 :(得分:3)

首先需要创建join值为a| or regex表示bprint ('|'.join(a)) a|b|c print (b.str.contains('|'.join(a))) 0 True 1 True 2 False 3 False dtype: bool print (a[b.str.contains('|'.join(a))]) 0 a 1 b dtype: object 的表达式,然后使用contains进行检查if check中的值,上次使用boolean indexing进行过滤:

connections' => [

    'mysql'       => [

        'driver'      => 'mysql',

        if(env('APP_ENV') == 'local'){

            'host'        => env('DB_HOST'),
            'database'    => env('DB_DATABASE'),
            'username'    => env('DB_USERNAME'),
            'password'    => env('DB_PASSWORD'),
            'unix_socket' => env('UNIX_SOCKET'),

        }else{

            'host'     => parse_url(getenv("DATABASE_URL"))["host"],
            'database' => substr(parse_url(getenv("DATABASE_URL"))["path"], 1),
            'username' => parse_url(getenv("DATABASE_URL"))["user"],
            'password' => parse_url(getenv("DATABASE_URL"))["pass"],

        }

        'charset'     => 'utf8',
        'collation'   => 'utf8_unicode_ci',
        'prefix'      => '',
        'strict'      => false,
    ]

],

答案 1 :(得分:1)

您可以使用child_added方法逐一检查a中的元素是b的子字符串:

apply