我想比较两个系列的字符串,看看一个是否包含另一个元素。
我首先尝试使用 apply,但它很慢:
cols = ['s1','s2']
list_of_series = [pd.Series(['one','sdf'],index=cols), pd.Series(['two','x y two'],index=cols)]
df = pd.DataFrame(list_of_series, columns=cols)
df
s1 s2
0 one sdf
1 two x y two
df.apply(lambda row: row['s1'] in row['s2'], axis=1)
0 False
1 True
dtype: bool
它似乎适用于以下代码:
x=np.array(['one','two'])
y=np.array(['sdf','x y two'])
np.char.find(y,x)
array([-1, 4])
但是如果我有一个数据框,我会得到一个错误:
np.char.find(df.s2.values,df.s1.values)
TypeError: string operation on non-string array
有人可以建议解决方案吗?
最佳答案
从 numpy.core
中使用 find
并添加 astype
str
from numpy.core.defchararray import find
find(df.s2.values.astype(str),df.s1.values.astype(str))!=-1
Out[430]: array([False, True])
关于python - 通过 np.char.find 比较 pandas 数据帧的两列给出 TypeError : string operation on non-string array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012298/