我正在努力使用Python pandas
包中的层次索引.具体来说,我不明白如何在旋转后过滤和比较行中的数据.
以下是文档中的示例表:
import pandas as pd
import numpy as np
In [1027]: df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 6,
'B' : ['A', 'B', 'C'] * 8,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
'D' : np.random.randn(24),
'E' : np.random.randn(24)})
In [1029]: pd.pivot_table(df, values='D', rows=['A', 'B'], cols=['C'])
Out[1029]:
C bar foo
A B
one A -1.154627 -0.243234
B -1.320253 -0.633158
C 1.188862 0.377300
three A -1.327977 NaN
B NaN …
Run Code Online (Sandbox Code Playgroud) 我使用python pandas跨数据帧执行分组和聚合,但我现在想执行特定的行成对聚合(n选择2,统计组合).这是示例数据,我想在[mygenes]中查看所有基因对:
import pandas
import itertools
mygenes=['ABC1', 'ABC2', 'ABC3', 'ABC4']
df = pandas.DataFrame({'Gene' : ['ABC1', 'ABC2', 'ABC3', 'ABC4','ABC5'],
'case1' : [0,1,1,0,0],
'case2' : [1,1,1,0,1],
'control1':[0,0,1,1,1],
'control2':[1,0,0,1,0] })
>>> df
Gene case1 case2 control1 control2
0 ABC1 0 1 0 1
1 ABC2 1 1 0 0
2 ABC3 1 1 1 0
3 ABC4 0 0 1 1
4 ABC5 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
最终产品应如下所示(默认情况下应用np.sum很好):
case1 case2 control1 control2
'ABC1', 'ABC2' 1 2 0 1
'ABC1', 'ABC3' 1 2 1 …
Run Code Online (Sandbox Code Playgroud) 我试图使用Python来操作格式A中的文本文件:
Key1
Key1value1
Key1value2
Key1value3
Key2
Key2value1
Key2value2
Key2value3
Key3...
Run Code Online (Sandbox Code Playgroud)
进入格式B:
Key1 Key1value1
Key1 Key1value2
Key1 Key1value3
Key2 Key2value1
Key2 Key2value2
Key2 Key2value3
Key3 Key3value1...
Run Code Online (Sandbox Code Playgroud)
具体来说,这里简要介绍一下文件本身(只显示一个密钥,完整文件中还有数千个密钥):
chr22:16287243: PASS
patientID1 G/G
patientID2 G/G
patient ID3 G/G
Run Code Online (Sandbox Code Playgroud)
这里有所需的输出:
chr22:16287243: PASS patientID1 G/G
chr22:16287243: PASS patientID2 G/G
chr22:16287243: PASS patientID3 G/G
Run Code Online (Sandbox Code Playgroud)
我编写了以下可以检测/显示密钥的代码,但是我在编写代码时难以存储与每个密钥关联的值,并随后打印这些键值对.任何人都可以帮我完成这项任务吗?
import sys
import re
records=[]
with open('filepath', 'r') as infile:
for line in infile:
variant = re.search("\Achr\d",line, re.I) # all variants start with "chr"
if variant:
records.append(line.replace("\n",""))
#parse lines until a …
Run Code Online (Sandbox Code Playgroud) 我有以下代码,我想要所有1的索引位置:
mylist = ['0', '0', '1', '1', '0']
for item in mylist:
if item is '1':
print mylist.index(item)
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这个程序的输出是2,2而不是2,3?
谢谢
python ×4
indexing ×2
pandas ×2
aggregate ×1
combinations ×1
key-value ×1
list ×1
pivot ×1
pivot-table ×1
text-files ×1