重置数据帧列中的一组标识符

2024-09-27 00:22:56 发布

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

我已经从一个数据帧生成了三个输出,我试图通过从1开始为每个输出重置句子(Sentence_ID)的标识符

输出示例:

Sentence_ID  Mention Tag
6388    Chailland   B-LOCATION
6388    ,   O
6388    Mayenne B-LOCATION

6389    poste   O
6389    de  O
6389    Goumois B-LOCATION
6389    (   I-LOCATION
6389    Doubs   I-LOCATION
6389    )   I-LOCATION
6389    .   O
        
6390    Pichet  B-PERSON
6390    (   O
6390    veuve   O
6390    )   O
6390    ,   O
6390    de  O
6390    Paris   B-LOCATION
6390    .   O
... continue

预期产出:

Sentence_ID  Mention Tag
1 Chailland B-LOCATION
1   ,   O
1   Mayenne B-LOCATION

2   poste   O
2   de  O
2   Goumois B-LOCATION
2   (   I-LOCATION
2   Doubs   I-LOCATION
2   )   I-LOCATION
2   .   O
        
3   Pichet  B-PERSON
3   (   O
3   veuve   O
3   )   O
3   ,   O
3   de  O
3   Paris   B-LOCATION
3   .   O
... continue

我肯定遗漏了什么,但不确定是否应该在Sentence_id列上应用计数器(通过group_by())或在该特定列上应用reset_index来完成此任务

如果有人有线索,请提前感谢


Tags: idtagdelocationsentencepersonparisposte
2条回答

您可以使用^{}生成一组新的序列号,如下所示:

df['Sentence_ID'] = pd.factorize(df['Sentence_ID'])[0] + 1

或使用^{}

df['Sentence_ID'] = df['Sentence_ID'].factorize()[0] + 1

结果:

print(df)


    Sentence_ID    Mention         Tag
0             1  Chailland  B-LOCATION
1             1          ,           O
2             1    Mayenne  B-LOCATION
3             2      poste           O
4             2         de           O
5             2    Goumois  B-LOCATION
6             2          (  I-LOCATION
7             2      Doubs  I-LOCATION
8             2          )  I-LOCATION
9             2          .           O
10            3     Pichet    B-PERSON
11            3          (           O
12            3      veuve           O
13            3          )           O
14            3          ,           O
15            3         de           O
16            3      Paris  B-LOCATION
17            3          .           O

您可以创建一个字典,其键是旧ID,值是新ID,并使用它映射一个新的Sentence_ID

mapping = dict(zip(df["Sentence_ID"].unique(), range(1, df["Sentence_ID"].nunique() +1)))
df["Sentence_ID"] = df["Sentence_ID"].map(mapping)

相关问题 更多 >

    热门问题