我有一个函数get_tags
,它返回与文本对应的标签列表:
def get_tags(text):
# Do some analysis and return a list of tags
return tags
例如,
get_tags(text1)
返回 ['a', 'b', 'c']
,而 get_tags(text2)
返回 ['a', 'b']
我还有一个 pandas DataFrame df
,它有 500,000 行和列 [text, a, b, c, d, e, f]
。我想将 1 填充为特定行中的文本标签。目前,我正在执行for i in range(len(df)):
df.loc[i, get_tags(df.loc[i, "text"])] = 1
这太慢了。我可以使用 joblib
,但在此之前,我想看看实现这一目标的最有效方法。
执行之前,df
的样子是这样的:
text a b c d e f
0 text having a, b, c tags 0 0 0 0 0 0
1 text having a, c tags 0 0 0 0 0 0
2 text having a, b, f tags 0 0 0 0 0 0
执行后,它应该是这样的:
text a b c d e f
0 text having a, b, c tags 1 1 1 0 0 0
1 text having a, c tags 1 0 1 0 0 0
2 text having a, b, f tags 1 1 0 0 0 1
df['label'] = df['text'].apply(lambda x: get_tags(x))
,然后从 label 列中将标签拆分到相应的列中。 - Sociopath