我有一个约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
我想您可以使用
isin
来获得掩码:注意索引中的
8
、4
、5
类型。你知道吗相关问题 更多 >
编程相关推荐