如何在不使用列名的情况下过滤pandas行 - 循环过滤
我正在尝试使用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]