Pandas用lis拉出一排

2024-09-25 00:24:11 发布

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

我有一个约50000行长的数据帧,正在尝试根据一个列表提取行的子集。我已经确认了我的列表c包含了我想要提取的行的所有正确id名称,并且所有这些id都在我的原始数据帧中,但是当我使用loc将行提取到一个新的数据帧中时,它只提取了我在列表c中标识的大约一半id。pandas中的loc函数在较小的测试中工作得很好,但是我无法弄清楚为什么它不能在我更大的数据帧上工作。可能是因为我的索引既有数字值也有基于字符串的值吗?你知道吗

关于为什么会发生这种情况,或者loc函数的替代方法有什么想法吗?你知道吗

这是我的密码:

c = ['a','b','f','h','y']

df = pd.read_table('count_table.txt',comment="#",index_col='id')

df2 =df.loc[df.index.isin(c)]

对于添加的信息,我的实际数据帧如下所示:

            T1   T2   T3
   A1       1     +   89 
   A2       2     +   12
   A3       3     +    0
   4        4     +   11
   5        5     -    7
   6        6     -    8
   7        7     +   56
   8        8     -   21
   MS1      1     +    1
   MS2      2     +    8
   NH5      5     +    0
   NH7      7     +   12
   .....

预期的输出将是一个新的dataframe,它只包含列表c中具有索引的行

假设我有上面的数据帧和一个列表c=['MS1','NH5','8','4','5']我想要一个如下所示的数据帧:

            T1   T2   T3
   4        4     +   11
   5        5     -    7
   8        8     -   21
   MS1      1     +    1
   NH5      5     +    0

我得到的结果是这样的,它在列表c中明显缺少了一些值:

            T1   T2   T3
   4        4     +   11
   8        8     -   21
   NH5      5     +    0

Tags: 数据函数iddf列表indextableloc