【发布时间】:2022-01-19 18:15:56
【问题描述】:
以下表为例:
| index | column_1 | column_2 |
|---|---|---|
| 0 | bli bli | d e |
| 1 | bla bla | a b c d e |
| 2 | ble ble | a b c |
如果我给出token_list = ['c', 'e'],我想按照每行在第 2 列中包含的标记的次数对表格进行排序。
通过订购表格,我应该得到以下信息:
| index | column_1 | column_2 | score_tmp |
|---|---|---|---|
| 1 | bla bla | a b c d e | 2 |
| 0 | bli bli | d e | 1 |
| 2 | ble ble | a b c | 1 |
目前,我已经达到了以下方法,但这需要很多时间。我怎样才能改善时间?提前谢谢你。
df['score_tmp'] = df[['column_2']].apply(
lambda x: len([True for token in token_list if
token in str(x['column_2'])]), axis=1)
results = df.sort_values('score_tmp', ascending=False).loc[df['score_tmp'] == len(token_list)].reset_index(inplace=False).to_dict('records')
【问题讨论】:
标签: python pandas optimization timeit