苦苦挣扎的新手。 如果我有两个 pandas 数据框,例如:
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
关于python - 如果 pandas 系列中的字符串包含来自另一个 pandas 数据帧的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49696700/