【问题标题】:Select Specific Columns only form a dataframe in Python选择特定列仅在 Python 中形成数据框
【发布时间】: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


    【解决方案1】:

    对于特定顺序的一组特定列,请使用:
    df = gene_input[['Sample1', 'Sample2', 'Sample4', 'Sample7']]

    如果您需要自动创建该列表 (['Sample1',...]),并且名称如给定,您应该能够构建两个列表,将它们组合然后排序:
    @ 987654322@

    您拥有的名称应该正确排序。对于输出,您应该可以使用:
    df.to_csv(<output file name>, sep='\t')

    编辑:添加关于输出的部分

    【讨论】:

    • 谢谢。 df.to_csv 完全回答了我的要求。另一个快速的问题:如果我想在 gene_input = pd.read_table(args.gene, sep="\t" ,index_col=0) 中有多个索引列,我该怎么做?我知道它必须在 index_col 但它不能选择超过 1 列作为索引。这也可以帮助我合并其他列。谢谢
    猜你喜欢
    • 2022-07-08
    • 2017-12-20
    • 2012-08-05
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多