在Python中基于多个条件过滤DF中的数据

在Python中基于多个条件过滤DF中的数据,python,pandas,dataframe,csv,filter,Python,Pandas,Dataframe,Csv,Filter,因此,我试图根据多种条件从DF中过滤数据。我在网上做了研究,但还没有找到有效的解决方案 我找到了两种我理解的方法,但它们也不起作用。 当我使用Excel过滤数据时,我可以看到有基于我的条件的数据,但在Python中,我不确定为什么我的代码不能工作 任何帮助都将不胜感激 # need: # Value = everything # Ethnicity = everything # based on: # Time = 2004 # Region = All # Age = All # Sex

因此,我试图根据多种条件从DF中过滤数据。我在网上做了研究,但还没有找到有效的解决方案

我找到了两种我理解的方法,但它们也不起作用。 当我使用Excel过滤数据时,我可以看到有基于我的条件的数据,但在Python中,我不确定为什么我的代码不能工作

任何帮助都将不胜感激

# need: 
# Value = everything
# Ethnicity = everything

# based on:
# Time = 2004
# Region = All
# Age = All
# Sex = All

# method 1
a = df.loc[(df.Time == "2004") & (df.Region == "All") & (df.Age == "All") & (df.Sex == "All"), ["Ethnicity","Value"]]
print(a)

# method 2
b = np.where((df.Time == "2004") & (df.Region == "All") & (df.Age == "All") & (df.Sex == "All"))
print(df.loc[b])

Output:
Empty DataFrame
Columns: [Ethnicity, Value]
Index: []
Empty DataFrame
Columns: [Measure, Measure_type, Ethnicity, Ethnicity_type, Time, Time_Type, Region, Age, Age_Type, Sex, Value, confidence_interval, Numerator, denominator, samp_size]
Index: []
Excel数据过滤显示存在基于我的条件的数据,但如何在Python中实现这一点?

您只能使用如下数据帧基本筛选语法(您有一些错误):

  • 首先,在
    (df.Time==“2004”)
    中,当将excel工作表作为数据框导入时,会自动在此处将其转换为正确的类型
    int
    ,因此您需要
    (df.Time==2004)
  • 然后,由于您不需要过滤两列,因此省略
    [“种族”、“价值”]
a=df[(df.Time==“2004”)&(df.Region==“All”)&(df.Age==“All”)&(df.Sex==“All”)][“种族”、“价值观”]

df[(df['Time'] == 2004) & (df['Region'] == "All") & (df['Age'] == "All") & (df['Sex'] == "All")]