这个人已经让我震惊了几个小时。也许我缺少一些神秘的“陷阱”,但是它必须非常违反直觉。
'trial_unq'是两列数据帧,'trial_unq2'是相同的副本,for循环遍历'unique_in'中的所有字符串。如果trial_unq文本中的“ unique_in”少于250次,则将一个布尔列插入到trial_unq的末尾。如果untriue_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)
输出
['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数据帧都添加了所有三列。
答案 0 :(得分:2)
在Python中,多个名称可以引用相同的对象,例如
l1 = [1, 2, 3]
l2 = l1 # now both, l1 and l2 refer to the same object!
l2[1] = 100
现在l1
和l2
都看起来像这样:
[1, 100, 3]
您的两个数据框也会发生同样的情况。
在这种情况下,您只需使用.copy()
l3 = l1.copy()
l3[1] = 0
l1
[1, 100, 3]
l3
[1, 0, 3]
因此,要解决您的问题,您需要做的是:
trial_unq2 = trial_unq.copy()