pandas 将字符串包含应用于panda Dataframe 上的不同字符串或panda或dask中的groupby对象

amrnrhlw  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(148)

我想使用类似下面的格式在元素级执行str.contains():

df['superstring'].str.contains(df['substring'])
qc6wkl3g

qc6wkl3g1#

方法1:对每个唯一的子字符串执行操作

这种方法在Pandas身上效果更好,因为Pandas的任务数量非常大。

import dask.dataframe as dd

def multi_str_contains(dataframe, sub_col, super_col, new_col):
    results = []
    sub_col_unique = dataframe[sub_col].unique()
    if len(sub_col_unique)==0:
        return None
    
    def in_sec(sub):
        sec = dataframe[dataframe[sub_col]==sub].copy()
        sec[new_col] = sec[super_col].str.contains(sub, regex=False)
        return sec
    
    vals = [v for v in [in_sec(sub) for sub in sub_col_unique] if v is not None]
    
    if len(vals)==0:
        return None
    
    return dd.concat(vals)

相关问题