簡體   English   中英

如果pandas系列中的字符串包含另一個pandas數據幀中的字符串

[英]if string in pandas series contains a string from another pandas dataframe

掙扎的新手。 如果我有兩個熊貓數據框,例如:

    import pandas as pd
    data = {'col1': ['black sphynx bob','brown labrador','grey labrador mervin',
            'brown siamese cat','white siamese']}
    desc_df = pd.DataFrame(data=data)

    catg = {'dog': ['labrador','rottweiler',
            'beagle'],'cat':['siamese','sphynx','ragdoll']}

    catg_df = pd.DataFrame(data=catg)

    desc_df
               col1
    0      black spyhnx bob
    1        brown labrador
    2  grey labrador mervin
    3     brown siamese cat
    4         white Siamese

   catg_df
         cat         dog
   0  siamese    labrador
   1   sphynx  rottweiler
   2  ragdoll      beagle

我想以desc_df數據框結尾:

           col1             col2
0      black spyhnx bob     cat
1        brown Labrador     dog
2  grey labrador Mervin     dog
3     brown siamese cat     cat 
4         white Siamese     cat

我以為我可以將apply方法與功能結合使用。 我只是不是100%確信這是否是解決此問題的最佳方法,以及它是如何實現的。 非常感謝

您可以使用str.contains + np.where

desc_df['col2']=np.where(desc_df.col1.str.contains(catg_df.cat.str.cat(sep='|')),'cat','dog')
desc_df
Out[1538]: 
                   col1 col2
0      black spyhnx bob  dog
1        brown labrador  dog
2  grey labrador mervin  dog
3     brown siamese cat  cat
4         white siamese  cat

確定更新多個條件

d=catg_df.apply('|'.join).to_dict()
desc_df.col1.apply(lambda x : ''.join([z if pd.Series(x).str.contains(y).values else '' for z,y in d.items()]))
Out[1568]: 
0       
1    dog
2    dog
3    cat
4    cat
Name: col1, dtype: object

一種方法是創建將動物映射為類型的字典。

然后將pd.Series.applynext和一個生成器表達式一起使用:

d = {i: k for k in catg_df for i in catg_df[k].unique()}

desc_df['col2'] = desc_df['col1'].apply(lambda x: next((d.get(i) for i in x.split() \
                                                        if i in d), None))

print(desc_df)

#                    col1 col2
# 0      black sphynx bob  cat
# 1        brown labrador  dog
# 2  grey labrador mervin  dog
# 3     brown siamese cat  cat
# 4         white siamese  cat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM