如何使用pandas过滤行而不使用列名称 - 循环过滤器

时间:2014-10-31 20:35:31

标签: python pandas dataframe

我正在尝试使用Pandas过滤DataFrame中的行,而不是使用:

df[(df.ColumnA == 1)]

我希望能够做到这一点:

i = 'A'
x = 'Column'+'i'
df[(df.x == 1)]

我的目标是循环使用列过滤器。 如果我能做到这一点会更好:

i = A
x = 'Column'+'i'
y = 1
df[(df.x == y)]

允许我在列中循环并循环过滤器类型:

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您尝试从DataFrame中获取系列,但由于.表示法不允许变量而遇到问题,您可以使用括号代替:

i = 'A'
column = 'Column' + i
df = df[df[column] == 1]

您还可以在循环中创建遮罩并立即应用它:

column_base = 'Column'
suffixes = ['A','B','C','D']
mask = None

for i in suffixes:
    column = column_base + i
    if mask is None:
        mask = df[column] == 1
    else:
        mask &= df[column] == 1

df = df[mask]