gpt4 book ai didi

python - 将多分隔符列拆分为多列

转载 作者:太空狗 更新时间:2023-10-30 02:26:48 24 4
gpt4 key购买 nike

我有一个包含 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 +

关于python - 将多分隔符列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com