问题描述
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