替换dataframe列中的特定值

2024-04-30 23:55:22 发布

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

我在jupyter notebook中运行以下代码,它检查nametest_df['text']中的文本字符串并返回人名。我设法让它工作,并希望将这些名称推送到nametest_df['name']中的相应字段,其中当前所有值都是NaN。你知道吗

我尝试了Series.replace()方法,但是'name'列中的所有条目都显示相同的名称。你知道吗

你知道我该怎么做吗?你知道吗

for word in nametest_df['text']:

    for sent in nltk.sent_tokenize(word):
        tokens = nltk.tokenize.word_tokenize(sent)
        tags = st.tag(tokens)

        for tag in tags:
            if tag[1]=='PERSON':
                name = tag[0]
                print(name)

    nametest_df.name = nametest_df.name.replace({"NaN": name})

样品名称测试

      **text**                    **name**
0   His name is John                NaN
1   I went to the beach             NaN
2   My friend is called Fred        NaN

预期产量

      **text**                    **name**
0   His name is John                John                
1   I went to the beach             NaN
2   My friend is called Fred        Fred      

Tags: textnamein名称dfforistag
1条回答
网友
1楼 · 发布于 2024-04-30 23:55:22

不要尝试逐个填充序列值。这样效率低,容易出错。一个更好的方法是创建一个名称列表并直接分配。你知道吗

L = []
for word in nametest_df['text']:
    for sent in nltk.sent_tokenize(word):
        tokens = nltk.tokenize.word_tokenize(sent)
        tags = st.tag(tokens)
        for tag in tags:
            if tag[1]=='PERSON':
                L.append(tag[0])

nametest_df.loc[nametest_df['name'].isnull(), 'name'] = L

相关问题 更多 >