Pandas阅读多索引fi的特定列

2024-05-04 04:10:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据文件(两个标题行,索引列,制表符分隔)如下:

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

或简化:

^{pr2}$

我想将read_count列的内容读入数据帧。使用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。在

有没有解决办法/合适的解决方案?我不想读整个文件,而实际上只有一部分是有用的。在


Tags: readcountletreadspermappedmirnamillion
1条回答
网友
1楼 · 发布于 2024-05-04 04:10:11

试试这个:

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中。在

相关问题 更多 >