如何在多个值的数据框中过滤单个列

时间:2019-12-10 20:48:34

标签: python pandas data-cleaning

我有一个数据框,我想用一个列中的多个值对其进行过滤,我该如何做到这一点?当我按奇异值过滤时,通常使用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个最大值

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_orlogical_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)]