【发布时间】:2015-12-27 02:27:11
【问题描述】:
使用 python 和 pandas 作为 pd,我正在尝试输出一个文件,该文件具有基于特定标题的列子集。
这是一个输入文件的例子
gene_input = pd.read_table(args.gene, sep="\t" ,index_col=0)
gene_input的结构:
样品1 样品2 样品3 样品4 样品5 样品6 样品7 样品8 基因1 2 23 213 213 13 132 213 4312 基因2 3 12 21312 123 123 23 4321 432 基因3 5 213 21312 15 516 3421 4312 4132 基因4 2 123 123 7 610 23 3214 4312 基因5 1 213 213 1 152 23 1423 3421使用不同的循环,我生成了两个字典。第一个有键(Sample 1 和 Sample 7),第二个有键(Sample 4 和 8)。
我想要以下输出(请注意,我希望每个词典中的样本是连续的;即首先是所有词典 1,然后是所有词典 2): 我正在寻找的输出是:
样品 1 样品 7 样品 4 样品 8 基因1 2 213 213 4312 基因2 3 4321 123 432 基因3 5 4312 15 4132 基因4 2 3214 7 4312 基因5 1 1423 1 3421我尝试了以下方法,但都没有成功:
key_num=list(dictionary1.keys())
num = genes_input[gene_input.columns.isin(key_num)]
为了提取第一组列,然后以某种方式组合它,但失败了。它一直给我属性错误,我确实更新了熊猫。我还尝试了以下方法:
reader = csv.reader( open(gene_input, 'rU'), delimiter='\t')
header_row = reader.next() # Gets the header
for key, value in numerator.items():
output.write(key + "\t")
if key in header_row:
for row in reader:
idx=header_row.index(key)
output.write(idx +"\t")
以及其他一些命令/循环/行。有时我只得到第一个键只在输出中,有时我得到一个错误;取决于我尝试过的方法(为方便起见,我没有在这里全部列出)。
无论如何,如果有人对我如何生成感兴趣的输出文件有任何意见,我将不胜感激。
再次,这是我想要的最终输出:
样品 1 样品 7 样品 4 样品 8 基因1 2 213 213 4312 基因2 3 4321 123 432 基因3 5 4312 15 4132 基因4 2 3214 7 4312 基因5 1 1423 1 3421【问题讨论】:
标签: python pandas header extract