Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于一列中的行将数据拆分为多列_Python_R - Fatal编程技术网

Python 基于一列中的行将数据拆分为多列

Python 基于一列中的行将数据拆分为多列,python,r,Python,R,我想根据行的字符将位于一列中的数据拆分为两个单独的列。以下是数据: 3C-assembly|contig_93 ptg000037l 3C-assembly|contig_94 ptg000039l 3C-assembly|contig_95 ptg000043l 3C-assembly|contig_96 ptg000196l ptg000060l 3C-assembly|contig_97 ptg000083l ptg000083l 3C-assembly|con

我想根据行的字符将位于一列中的数据拆分为两个单独的列。以下是数据:

3C-assembly|contig_93
ptg000037l  
3C-assembly|contig_94
ptg000039l  
3C-assembly|contig_95
ptg000043l  
3C-assembly|contig_96
ptg000196l  
ptg000060l  
3C-assembly|contig_97
ptg000083l  
ptg000083l  
3C-assembly|contig_98
ptg000117l  
ptg000005l  
3C-assembly|contig_99
ptg000123l  
ptg000123l  
ptg0001232  
ptg0001233  
    
我需要将所有3C组件| contig_uu放在第一列,将所有相应的ptg000放在第二列:

3C-assembly|contig_93 ptg000037l
3C-assembly|contig_94 ptg000039l
3C-assembly|contig_95 ptg000043l
3C-assembly|contig_96 ptg000196l
3C-assembly|contig_96 ptg000060l
3C-assembly|contig_97 ptg000083l
3C-assembly|contig_97 ptg000083l
3C-assembly|contig_98 ptg000117l
3C-assembly|contig_98 ptg000005l
3C-assembly|contig_99 ptg000123l
3C-assembly|contig_99 ptg000123l
3C-assembly|contig_99 ptg0001232
3C-assembly|contig_99 ptg0001233
...........

这里有一个答案。如果在存在“3C”(或组的其他标识符,可能是“|”字符)的情况下使用
cumsum
创建分组向量,则可以通过R的数据帧定义循环约定将第一项(一次)拆分并使用到任何剩余项:

dat <- read.table(text=txt)  # copied your data into txt
dat <- cbind(dat, grp=cumsum( grepl("3C", dat$V1) ))
#grepl pattern could have been "assembly" if that were more general

   do.call(rbind,  lapply( split(dat, dat$grp), 
           function(x) data.frame(
                            group=x[1,1], # first gets recycled
                            item=x[-1,1]) )  ) # the rest
                    group       item
1   3C-assembly|contig_93 ptg000037l
2   3C-assembly|contig_94 ptg000039l
3   3C-assembly|contig_95 ptg000043l
4.1 3C-assembly|contig_96 ptg000196l
4.2 3C-assembly|contig_96 ptg000060l
5.1 3C-assembly|contig_97 ptg000083l
5.2 3C-assembly|contig_97 ptg000083l
6.1 3C-assembly|contig_98 ptg000117l
6.2 3C-assembly|contig_98 ptg000005l
7.1 3C-assembly|contig_99 ptg000123l
7.2 3C-assembly|contig_99 ptg000123l
7.3 3C-assembly|contig_99 ptg0001232
7.4 3C-assembly|contig_99 ptg0001233
python中的dat

#假设数据在dataframe中。我刚刚创建了它:

import pandas as pd
a=[
"3C-assembly|contig_93 ptg000037l",
"3C-assembly|contig_94 ptg000039l",
"3C-assembly|contig_95 ptg000043l",
"3C-assembly|contig_96 ptg000196l",
"3C-assembly|contig_96 ptg000060l",
"3C-assembly|contig_97 ptg000083l",
"3C-assembly|contig_97 ptg000083l",
"3C-assembly|contig_98 ptg000117l",
"3C-assembly|contig_98 ptg000005l",
"3C-assembly|contig_99 ptg000123l",
"3C-assembly|contig_99 ptg000123l",
"3C-assembly|contig_99 ptg0001232",
"3C-assembly|contig_99 ptg0001233"]

a=pd.DataFrame(a, columns=["data"])

#Define Function to SPlit and Extract
def ExtractContig(Name):
    #Split Based on Space
    splitgroup=Name.strip().split(' ')
    contigselect = splitgroup[0]
    ptgselect=splitgroup[1]
    
    # Split Based on Underscore to get first column
    contig = contigselect.strip().split('_')[-1]    
    
    #Split Based on "g" of the string ptgxxxxxx
    ptg = ptgselect.strip().split('g')[-1]    
    return   contig,ptg

#Function Call and Collect Title for Each rows
a['data'].apply(lambda Name: ExtractContig(Name))
您可以存储并执行进一步的分析。这种情况下的输出为:

0     (93, 000037l)
1     (94, 000039l)
2     (95, 000043l)
3     (96, 000196l)
4     (96, 000060l)
5     (97, 000083l)
6     (97, 000083l)
7     (98, 000117l)
8     (98, 000005l)
9     (99, 000123l)
10    (99, 000123l)
11    (99, 0001232)
12    (99, 0001233)
Name: data, dtype: object

数据类型是什么?你在用什么巫术语言?数据是按某种数据结构排序的?嗨,卡里姆,欢迎来到堆栈溢出。。。请参阅Ido的问题,并为您的问题添加更多细节。还请分享您尝试或开始的任何内容,因为这通常是获得明确建议的一种有用方式。谢谢我注意到你有一个尾随的“l”(el)而不是1(1)。如前所述,它不会影响问题,但我想知道它是否会影响您的数据完整性?非常好。非常感谢。效果很好。