首页 > 解决方案 > 如何将一个字母和一个点分成不同的行

问题描述

我有一个包含两列的数据框,即 Word 和 Tag 列。自由度:

                      Word   Tag
0                    Pada    A
1                 bakteri    B 
2                       ,    C 
3       ketumpangtindihan    D  
4                     ini    E
5             kemungkinan    F
6                terlibat    G
7                   dalam    H
8                regulasi    I
9             transkripsi    O
10                   gen.    O

我想用 dot 分隔一些包含一个单词的行。word+.为两排。所以输出应该如下:

                      Word   Tag
0                    Pada    A
1                 bakteri    B 
2                       ,    C 
3       ketumpangtindihan    D  
4                     ini    E
5             kemungkinan    F
6                terlibat    G
7                   dalam    H
8                regulasi    I
9             transkripsi    O
10                    gen    O
11                      .    O 

有任何想法吗?提前致谢。如果我这样做了explode,则缺少标点符号。

标签: pythonpandasnumpydataframeexplode

解决方案


尝试:

df['Word'] = df['Word'].str.split('(?<=\w)\.')
df = df.explode('Word')

map = df['Word'].groupby(level=0).cumcount().ge(1)
df.loc[map, 'Word'] = '.' + df.loc[map, 'Word']
df = df.reset_index(drop=True)

一些注意事项:

(?<=\w)- 匹配之前有任何字母数字字符的所有内容

\.- 匹配点

所以本质上你会按点分割,前面是字母数字。然后,您将在每一秒的前面手动添加点,然后是拆分字符串的后面元素。

您的情况下的输出:

                 Word Tag
0                Pada   A
1             bakteri   B
2                   ,   C
3   ketumpangtindihan   D
4                 ini   E
5         kemungkinan   F
6            terlibat   G
7               dalam   H
8            regulasi   I
9         transkripsi   O
10                gen   O
11                  .   O

推荐阅读