如何在不使用列名的情况下过滤pandas行 - 循环过滤

0 投票
1 回答
1211 浏览
提问于 2025-04-30 22:57

我正在尝试使用Pandas来过滤一个数据表中的行,但我不想用下面这种方式:

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

如果你想从数据框(DataFrame)中提取一个序列(Series),但因为使用点(.)的方式不支持变量而遇到困难,你可以改用方括号来获取:

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]

撰写回答