在Python中将数据从长格式解析为宽格式

Uni*_*ent 2 python parsing reshape pandas

我想知道在python中解析长格式数据的最佳方法是什么.我之前在R中做过这样的任务,但它确实需要很长时间,因为我的文件可以超过1 GB.这是一些虚拟数据:

Sequence Position Strand Score
Gene1    0        +      1
Gene1    1        +      0.25
Gene1    0        -      1
Gene1    1        -      0.5
Gene2    0        +      0
Gene2    1        +      0.1
Gene2    0        -      0
Gene2    1        -      0.5
Run Code Online (Sandbox Code Playgroud)

但是我希望能够以广泛的形式将它与每个位置的分数相加.这是我希望的输出:

Sequence 0 1
Gene1    2 0.75
Gene2    0 0.6
Run Code Online (Sandbox Code Playgroud)

任何有关如何在概念上解决此类问题的帮助都会非常有用.

Wes*_*ney 7

当你可以用单线程中的大熊猫做这些解决方案时,这两种解决方案看起来都有些过分:

In [7]: df
Out[7]: 
  Sequence  Position Strand  Score
0    Gene1         0      +   1.00
1    Gene1         1      +   0.25
2    Gene1         0      -   1.00
3    Gene1         1      -   0.50
4    Gene2         0      +   0.00
5    Gene2         1      +   0.10
6    Gene2         0      -   0.00
7    Gene2         1      -   0.50

In [8]: df.groupby(['Sequence', 'Position']).Score.sum().unstack('Position')
Out[8]: 
Position  0     1
Sequence         
Gene1     2  0.75
Gene2     0  0.60
Run Code Online (Sandbox Code Playgroud)

如果您无法将文件加载到内存中,那么其他答案中的核心外解决方案也会起作用.