我有如下定义的数据框架,并希望使用变量名称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
>>>
对于Series
df['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]