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

问题描述

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

                      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,则标点符号会丢失。

解决方法

这里的回答无效;))

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