这件事让我心潮澎湃好几个小时了。也许我遗漏了一些神秘的“陷阱”,但它一定是非常违反直觉的。
“Trial_unq”是一个两列数据帧,“Trial_unq2”是一个相同的副本,for 循环遍历“unique_in”中的所有字符串。如果“unique_in”在 Trial_unq 文本中出现少于 250 次,则将布尔列插入到 Trial_unq 末尾。如果unqiue_in在Trial_unq的文本中出现超过10000次,则将布尔列n插入到Trial_unq2的末尾。
trial_unq2 = trial_unq
for i in range(len(unique_in)):#for each individual word
unq_count = trial_unq.brief_title.str.contains(unique_in[i]).sum()#count trial occurances
print(unique_in[i], ' ', unq_count)
if unq_count < 280 and unq_count > 0:
colname = unique_in[i]
colpos = len(trial_unq.columns)
boolcol = trial_unq.brief_title.str.contains(unique_in[i])
trial_unq.insert(colpos, colname, boolcol)
if unq_count > 10000:
colname2 = unique_in[i]
colpos2 = len(trial_unq2.columns)
boolcol2 = trial_unq2.brief_title.str.contains(unique_in[i])
trial_unq2.insert(colpos2, colname2, boolcol2)
print(trial_unq.columns)
print(trial_unq2.columns)
Output
['depressive', 'disorder', 'depressive disorder', 'therapy']
depressive 257
disorder 2190
depressive disorder 167
therapy 12236
Index(['NCT', 'brief_title', 'depressive', 'depressive disorder', 'therapy'], dtype='object')
Index(['NCT', 'brief_title', 'depressive', 'depressive disorder', 'therapy'], dtype='object')
从输出中可以清楚地看出,小计数 Trial_unq 数据帧和较大计数 Trial_unq2 数据帧都添加了所有三列。