我有一个数据框,我想用一个列中的多个值对其进行过滤,我该如何做到这一点?当我按奇异值过滤时,通常使用df_filtered = df[df['column'] == value]
,但这至少不适用于61个值,因为我尝试过。谢谢。
MRN ... Result
0 13556832 ... 400.0
1 13556832 ... 400.0
2 13556832 ... 400.0
3 13556832 ... 392.0
4 13556832 ... 400.0
这是数据帧的示例(大约有10万行,我需要过滤为一个项目标识的61个MRN值。因此最终,我希望有一个单独的df,其中包含所有MRN值我认为很重要。
我本质上是在寻找一种类似于.isin()运算符的解决方案,除了61个值,而不是2个最大值
答案 0 :(得分:1)
将所有61个MRN放入列表中
mrnList = [val1, val2, ...,val61]
然后过滤这些MRN,例如-
df_filtered = df[df['MRN'].isin(mrnList)]
制作mrnList时请注意您MRN值的数据类型。
答案 1 :(得分:0)
您可以将numpy.where
用于单个条件
import numpy as np
df_filtered = np.where(df['column'] == value, True, False)
和logical_or
,logical_and
用于多种情况
import numpy as np
cond1 = df['column'] == value
cond2 = df['column'] == value2
df_filtered = np.where(np.logical_or(cond1, cond2), True, False)
要通过值列表进行过滤,isin
会派上用场
whitelist = []
df_filtered = np.where(np.isin(df['value'], whitelist)), True, False)
用于过滤完整的DataFrame
isin
可以像
df_filtered = df[df.value.isin(whitelist)]