如何将一个字母和点拆分成不同的行

2024-09-30 22:27:44 发布

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

我有一个包含两列的数据框架,即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

我想用点分隔包含一个单词的行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,标点符号就丢失了


Tags: 数据框架taginiwordgen用点dalam
2条回答

这是一个低效的答案

import pandas as pd

data = [['Alex.',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
for x in df['Name']:
  if (x[-1] =='.'):
    df['Name'].replace(x,x[:-1],inplace=True)
    df = df.append({'Name':'.','Age':14},ignore_index=True) #assign your tag
print(df)

之前的输出:

     Name  Age
0   Alex.   10
1     Bob   12
2  Clarke   13

输出:

     Name  Age
0    Alex   10
1     Bob   12
2  Clarke   13
3       .   14

尝试:

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

相关问题 更多 >