过滤数据框值

时间:2018-11-05 03:43:51

标签: python pandas dataframe

我有一个数据框,要按大于20的值进行过滤

ID   value
A    10
B    21
C    22

我使用了df['ID'] > 20并收到了结果

False
True
True

但是,我希望它返回B, C,而不是布尔值

5 个答案:

答案 0 :(得分:3)

df.loc是你的朋友:

df.loc[df['value'] > 20, 'ID']

答案 1 :(得分:1)

或使用eval个熊猫:

df.loc[df.eval('value > 20'),'ID']

或者(不建议使用)where大熊猫:

df.where(df['value']>20,df['ID'],axis=1).dropna()['ID']

答案 2 :(得分:0)

仅选择值> 20的行,然后返回ID的值

import pandas as pd
df = {"ID": ["A", "B", "C"], "val":[10, 21, 22]}
df = pd.DataFrame(df)

df = df[df["val"] > 20]
df["ID"].values

返回:

array(['B', 'C'], dtype=object)

编辑:此处使用df.loc的答案与上述步骤相同,只是更好,更简洁。我会保留这一切,以防任何人解释。

答案 3 :(得分:0)

许多解决方法。

您可以使用向量化操作来解决此问题。现在,您的代码仅评估语句是对还是错。通过将此语句包装在方括号内,可以对Pandas数据框进行过滤,所有语句的评估结果都为True。

因此,如果您的数据集看起来像

df = pd.DataFrame({'ID': {0: 'A', 1: 'B', 2: 'C'}, 'value': {0: 10, 1: 21, 2: 22}})

您可以对其进行过滤: df[df['value'] > 20],或者如果您只想接收ID列中的值,则在该列的名称上加上df[df['value'] > 20]['ID']

答案 4 :(得分:0)

您可以过滤值

df[df['value'] > 20]

enter image description here

您可以通过在末尾添加所需的列来过滤所需的列

df[df['value'] > 20].ID

enter image description here