【问题标题】:how can I Filter single column in a dataframe on multiple values如何在多个值上过滤数据框中的单个列
【发布时间】:2020-04-04 02:31:55
【问题描述】:

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

这里是数据帧的示例(大约有 100k 行,我需要过滤我为项目确定的 61 个 MRN 值。所以最终我希望有一个单独的 df 包含所有 MRN 值我认为很重要。

我本质上是在寻找一个类似于 .isin() 运算符的解决方案,除了 61 个值,而不是 2 个最大值

【问题讨论】:

标签: python pandas data-cleaning


【解决方案1】:

将所有 61 个 MRN 放入一个列表中-

mrnList = [val1, val2, ...,val61]

然后过滤这些 MRN,比如-

df_filtered = df[df['MRN'].isin(mrnList)]

在制作 mrnList 时记下您的 MRN 值的数据类型。

【讨论】:

  • 我相信它们都是 int64,基于一些快速浏览。
【解决方案2】:

您可以将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)

对于过滤一个完整的DataFrameisin可以像

df_filtered = df[df.value.isin(whitelist)]

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2017-11-27
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多