我有一个数据文件(两个标题行,索引列,制表符分隔),如下所示:
Hybridization REF TCGA-2V-A95S-01A-11R-A37G-13 TCGA-2V-A95S-01A-11R-A37G-13 TCGA-2V-A95S-01A-11R-A37G-13 TCGA-2Y-A9GS-01A-12R-A38M-13 TCGA-2Y-A9GS-01A-12R-A38M-13 TCGA-2Y-A9GS-01A-12R-A38M-13 TCGA-2Y-A9GT-01A-11R-A38M-13 TCGA-2Y-A9GT-01A-11R-A38M-13 TCGA-2Y-A9GT-01A-11R-A38M-13
miRNA_ID read_count reads_per_million_miRNA_mapped cross-mapped read_count reads_per_million_miRNA_mapped cross-mapped read_count reads_per_million_miRNA_mapped cross-mapped
hsa-let-7a-1 17377 4045.749542 N 47187 7077.368096 N 31765 8956.551210 N
hsa-let-7a-2 34913 8128.517796 N 94766 14213.530526 Y 64148 18087.355487 N
hsa-let-7a-3 17496 4073.455371 N 47683 7151.760928 N 31782 8961.344580 N
hsa-let-7b 33546 7810.249993 N 46089 6912.683963 N 64948 18312.925799 N
hsa-let-7c 1349 314.077006 N 12185 1827.573913 Y 14075 3968.627681 N
hsa-let-7d 1735 403.946335 N 1763 264.424523 N 1176 331.588359 N
或简化:
Sample A A A B B B C C C D ...
Gene x y z x y z x y z x ...
gene1
gene2 [data matrix]
...
我想将read_count
列的内容读入DataFrame。使用df = pd.read_csv("file.csv", sep='\t', header=[0, 1], index_col=0, usecols=["read_count"])
会引发ValueError: cannot specify usecols when specifying a multi-index header
。
是否有解决办法/适当的解决方案?我实际上只有一部分内容有用时,我希望避免阅读整个文件。
答案 0 :(得分:0)
试试这个:
import pandas as pd
df = pd.read_csv("file.csv", sep='\t', header=[0, 1], index_col=0)
df2 = df.xs('read_count', axis = 1, level = 1)
从这里复制:pandas multiindex - how to select second level when using columns?
我也尝试使用pd.melt
,但没有得到很好的解决方案。
请注意,如果文件是机器内存的一小部分,读取它可能会导致问题。如果性能有问题,您可以尝试设置chunksize
。我相信,但不确定,当调用read_csv
时,pandas会将整个文件读入内存,即使只有一部分文件存储在df
中。