Skip to main content
 首页 » 编程设计

python之如何拆分特定范围内的列

2025年05月04日11小虾米

我正在研究蛋白质轨迹,我有一个很长的数据框。 (一栏 600.000 行的文件。

这是一个例子:

100 
100 
0 
100 
100 
... 
n=600.000 

我希望每 3000 行拆分此数据,在旁边创建一个新列,如下例所示:

Col1     Col2     Col3     Col4      Col...200: 
n=1      n=3001   n=6001   n=9001    ... 
0        0        0        0         ... 
0        0        0        0         ... 
100      100      100      100       ... 
...      ...      ...      ...       ... 
n=3000   n=6000   n=9000   n=12000   n=600.000 

n= 行号。

有什么方法可以在 R 或 bash 中做到这一点?

非常感谢您。

编辑:我在 python 中使用这个脚本来生成该列:

    from decimal import * 
i = 1 
while(i <= 15): 
    output = open('cache/distances_'+str(i)+'.dat.results', 'w')  
    with open('cache/distances_medias_'+str(i)+'.dat', 'r') as f: 
        for line in f: 
            columns = line.split(' ') 
            if(Decimal(columns[0]) <= 2.5 and (Decimal(columnas[1]) > 120 and Decimal(columnas[1]) < 180)): 
                salida.write("100\n") 
            else: 
                salida.write("0\n") 
    salida.close() 
    i+=2 

有什么方法可以修改脚本,当它到达第 3000 行时,从新的列开始?

请您参考如下方法:

我不确定我理解你的例子,但你应该能够使用拆分和粘贴的组合:

$ cat filetosplit 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 
$ split filetosplit  "split." -l 3 -d ; paste split* 
1       4       7       10 
2       5       8 
3       6       9 

split 命令会生成每行 3 行的文件(您可以修改为 3000)。粘贴会将它们放在一起。您可以使用 sed 添加带有列名和初始编号的标题。