我有一个这样的数据框(df):
sub kin s
0 a a1 T34;S89
1 b a2 S98
2 c a1 S98;S99;T100
3 a a3 S96
4 a a3 T76
5 b a3 T87;T88
我想复制/复制行,其中s列的值包含一个“;”。例如。第一行应分为两行,其中一行在s列中包含T34,另一行在s列中包含S89。
我尝试过的事情:
首先,我建立一个新列来测试是否存在“;”在s:
df['test'] = df['s'].str.contains(';')
接下来,我建立一个新的df(双精度),它仅包含带有';'的行。在s:
double = df[df['test'] == True]
我得到的是:
sub kin s test
0 a a1 T34;S89 True
2 c a1 S98;S99;T100 True
5 b a3 T87;T88 True
现在,我可以数出多少个“;”就是新行数减去每行我需要的行数:
n = [len(i) for i in [i.split(';') for i in list(double['s'])]]
从中,我得到一个这样的列表(n):
n = [2, 3, 2]
我不知道的是,如何获取仅包含';'中的一个的新列。值与s分开。
感谢您的帮助!