Pandas向未引用的datafram添加列

2024-04-24 07:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

这件事我已经想了好几个小时了。也许我遗漏了一些神秘的“明白了”,但这肯定是难以置信的反直觉。你知道吗

“trial\u unq”是两列数据帧,“trial\u unq2”是相同的副本,for循环在“unique\u in”中的所有字符串上循环。如果“unique\u in”在trial\u unq的文本中少于250次,则在trial\u unq的末尾插入一个布尔列。如果一个unqiue\u in在trial\u unq的文本中超过10000次,那么布尔列n将插入trial\u 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')

从输出可以清楚地看到,小count trial\u unq数据帧和大count trial\u unq2数据帧都添加了三列。你知道吗


Tags: columns数据inforlentitlecountunique
1条回答
网友
1楼 · 发布于 2024-04-24 07:53:13

在Python中,多个名称可以引用同一个对象,例如

l1 = [1, 2, 3]
l2 = l1  # now both, l1 and l2 refer to the same object!
l2[1] = 100

现在,l1l2都是这样的:

[1, 100, 3]

两个数据帧也会发生同样的情况。你知道吗

在这种情况下,您可以简单地使用.copy()

l3 = l1.copy()
l3[1] = 0

l1
[1, 100, 3]

l3
[1, 0, 3]

因此,要解决您的问题,您只需要:

trial_unq2 = trial_unq.copy()

相关问题 更多 >