【问题标题】:Keep only those rows in a Pandas DataFrame equal to a certain value (paired multiple columns) [duplicate]仅保留 Pandas DataFrame 中的那些行等于某个值(成对的多列)[重复]
【发布时间】:2020-05-31 14:29:59
【问题描述】:

可以在此处找到部分答案 (How to select rows from a DataFrame based on column values?),但它仅适用于一列。我想知道如何将它应用于多列(在本例中为两列)中的配对值。

我有一个数据框 df,其中过滤列是 B 和 C(NaN 表示空单元格):

    A     B      C  D
0   1  Blue  Green  4
1   2  Blue  Green  6
2   3  Blue  Green  2
3   4  Blue    NaN  6
4   5  Blue    NaN  9
5   6   NaN  Green  8
6   7  Blue  Green  8
7   8   NaN    NaN  9
8   9   NaN  Green  1
9  10   NaN  Green  2

我只想保留 B='Blue' 和 C='Green' 的 B 和 C 的行,所有其他行都可以删除,理想情况下会产生:

    A     B      C  D
0   1  Blue  Green  4
1   2  Blue  Green  6
2   3  Blue  Green  2
6   7  Blue  Green  8

有什么想法吗?

数据框代码:

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [1,2,3,4,5,6,7,8,9,10], "B": ['Blue', 'Blue', 'Blue', 'Blue','Blue', np.nan, 
'Blue', np.nan, np.nan, np.nan], "C": ['Green', 'Green', 'Green', np.nan, np.nan, 'Green', 'Green', 
np.nan, 'Green', 'Green'], "D": [4,6,2,6,9,8,8,9,1,2]})
print(df)

【问题讨论】:

  • 第二个答案 - this
  • 抱歉,之前没有看到多条件选项。谢谢!
  • 没问题,这是常见的欺骗问题。

标签: python pandas


【解决方案1】:

我认为您需要的是 & 运算符:

df[(df['B']=='Blue') & (df['C']=='Green')]

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 2019-06-10
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2021-08-19
    • 2017-05-10
    • 2017-12-29
    相关资源
    最近更新 更多