使用变量来过滤pandas数据框中的行



我有如下定义的数据框架,并希望使用变量名称ft进行过滤,如下面的代码所示:

df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
ft=["a"]
dt=df[df[ft]==3]
print(dt)

我得到以下结果:

a   b
NaN NaN
3.0 NaN

而实际结果应该只有第二行

a  b
3  4

我不希望使用列名,但变量。

提前感谢您的帮助

或者如果您不允许更改ft变量,请更改:

>>> df[df[ft].squeeze() == 3]
a  b
1  3  4
>>> 

对于Seriesdf['a']使用标量ft="a"代替ft=["a"]的一列DataFramedf[['a']]

如果需要测试索引,请使用:

ft = 3
dt = df.loc[ft]

如果不确定是否存在:

ft = 3
dt = df[df.index == ft]

对于第一列使用:

ft = 3
dt = df[df.iloc[:, 0] == ft]