df.C = np.where(['ye' in x for x in df.C], 'no', df.C.values)
df.loc[['ye' in x for x in df.C], 'C'] = 'no'
性能:
df = pd.DataFrame({'C':['aa ss ye','a s d','fff', 'yeye']})
#[40000 rows x 1 columns]
df = pd.concat([df] * 10000, ignore_index=True)
print (df)
In [13]: %timeit df.C = np.where(df.C.str.contains('ye').values, 'no', df.C.values)
21.6 ms ± 294 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
In [14]: %timeit df.C = np.where(['ye' in x for x in df.C], 'no', df.C.values)
3.29 ms ± 49.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [15]: %timeit df.loc[['ye' in x for x in df.C], 'C'] = 'no'
5.26 ms ± 105 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
使用^{} :
如果性能很重要:
性能:
pandas中的字符串操作很慢,所以最快的是使用列表理解和
in
。实际数据中的计时应该是不同的,因为这取决于匹配值的数量和DataFrame
的长度。你知道吗相关问题 更多 >
编程相关推荐