【发布时间】:2021-04-30 15:31:41
【问题描述】:
我是 Pandas 和 Python 的新手,所以我可能有非常琐碎的问题。
我有这样的数据框:
0 1 2 3 4 5 6 7 8 9 10 11
0 5_TKE12 0 1 0 0 2 0 1 0 0 0 0
1 1_aeroD15 0 1 0 0 0 0 1 0 1 0 0
2 6D9 1 2 1 0 0 0 0 0 0 0 1
3 24_RSG24 0 0 0 2 2 0 0 0 0 0 0
4 Other imm.as_SHF12 0 1 1 0 2 0 0 0 0 0 0
... ... .. .. .. .. .. .. .. .. .. .. ..
2078 45E72 0 0 2 1 1 0 0 0 0 0 0
2079 23_TKC61 0 0 0 0 0 0 0 0 0 0 0
2080 14_aeroD10 1 1 0 0 0 0 0 0 1 0 0
2081 16_TKD11 0 1 1 1 0 0 0 0 1 0 0
2082 Sensativite_SHF6 0 2 2 2 2 0 1 0 0 0 0
如果 value = 1,我需要过滤最后一列 (#11),并且我需要将第一列 (#0) 作为结果
因此,根据我的示例,我将拥有 6D9。
我尝试过滤数据框,但没有帮助。
我试过了:
filtered_ind = [1]
R4 = R4[:,R4[11].isin(filtered_ind)] #R4 is data Frame for table I showed above
print(R4)
我得到了这个答案:
TypeError: '(slice(None, None, None), 0 False
1 False
2 False
3 False
4 False
...
2078 False
2079 False
2080 False
2081 False
2082 False
Name: 11, Length: 2083, dtype: bool)' is an invalid key
【问题讨论】:
-
df.loc[df[11] == 1, 0]. -
假设您要使用
filtered_ind检查列11中的多个值,使您的代码工作的最小更改是:R4.loc[R4[11].isin(filtered_ind), 0],根据 @00 的评论。