微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 将多个分隔符列拆分为多个列

我有一个9列的文件.其中一列保持着这样的字符串

Unique
3:107912234-107912321(-)
4:107913333-107913322(+)
Y:222002110-221002100(+)
MT:34330044-343123232(-)
X:838377373-834121212(+)

〜400,000行,不同的字符串.如何将它分成同一个df中的4个不同的列,如果只有一个分隔符,我可以使用df.str(“,”),但由于它有不同的分隔符,我迷路了.

预期产量:

chr  start  end  strand
3    107912234 107912321 -
4    107913333 107913322 + 
Y    222002110 221002100 + 
MT   34330044  343123232 -
X    838377373 834121212 +

解决方法:

你可以使用extract

df1 = df['Unique'].str.extract("(?P<ch>.*?):(?P<start>\d+)-(?P<end>\d+)\((?P<strand>[-+])", 
                               expand=True)
print (df1)
   ch      start        end strand
0   3  107912234  107912321      -
1   4  107913333  107913322      +
2   Y  222002110  221002100      +
3  MT   34330044  343123232      -
4   X  838377373  834121212      +

感谢A-Za-z的建议 – 如果数据不总是 – 在strand列中:

df1 = df['Unique'].str.extract("(?P<ch>.*?):(?P<start>\d+)-(?P<end>\d+)\((?P<strand>.*)\)", 
                              expand=True)
print (df1)
   ch      start        end strand
0   3  107912234  107912321      -
1   4  107913333  107913322      +
2   Y  222002110  221002100      +
3  MT   34330044  343123232      -
4   X  838377373  834121212      +

如果需要添加到原始df,则此列使用join

print (df.join(df1))
                     Unique  ch      start        end strand
0  3:107912234-107912321(-)   3  107912234  107912321      -
1  4:107913333-107913322(+)   4  107913333  107913322      +
2  Y:222002110-221002100(+)   Y  222002110  221002100      +
3  MT:34330044-343123232(-)  MT   34330044  343123232      -
4  X:838377373-834121212(+)   X  838377373  834121212      +

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐