Pandas:在匿名数据帧上使用 loc 过滤行

时间:2021-01-02 13:11:40

标签: python pandas

我尝试创建一个查询,例如

traffic.groupby([round(traffic.a),traffic.r])[["sn","sbr"]].nunique().loc[a==2,:]

最后一个loc语句不起作用(a==2):“name 'a' is not defined.

如何过滤此类匿名数据框中的行?

** 更新 **

这是一个例子

a=[1,2,2,3]
r=[2,2,3,5]
sn=[1,1,2,2]
sbr=[2,2,2,3]

traffic=pd.DataFrame([a,r,sn,sbr],columns=["a","r","sn","sbr"])
traffic.groupby([round(traffic.a),traffic.r])[["sn","sbr"]].nunique().loc[a==2,:]

流量如下所示:

    a   r   sn  sbr
0   1   2   2   3
1   2   2   3   5
2   1   1   2   2
3   2   2   2   3

2 个答案:

答案 0 :(得分:0)

我希望我能看到你的数据框结构!但是我通常查询没有名称的行的方式(我假设当您说“匿名”时,您的数据集没有标题)是使用 iloc

例如,如果我想返回前两行,我会说:

dataframe.iloc[[0, 1]]  

或者如果我需要返回特定列的前两行,假设列号为 4

dataframe.iloc[[0, 1], 3]  

我希望这会有所帮助!

答案 1 :(得分:0)

这可能会有所帮助:

import pandas as pd

a = [1,2,2,3]
r = [2,2,3,5]
sn = [1,1,2,2]
sbr = [2,2,2,3]

traffic = pd.DataFrame([a,r,sn,sbr],columns=["a","r","sn","sbr"])
traffic.groupby([round(traffic.a),traffic.r])[["sn","sbr"]].nunique().T[2].T

输出为:

    sn  sbr
r       
2   2   2