提取一个单元格的值以另一列的值为条件-Pandas/Python

提取一个单元格的值以另一列的值为条件-Pandas/Python,python,pandas,group-by,Python,Pandas,Group By,我有一个数据帧,df,如下所示: Rank User 0 1690 samberman1212 1 1690 khogan3131 2 1690 narguero 3 1690 Awesemo 4 1690 Awesemo 5 1690 cptnspaulding 6 1690 Fluke7634 7 1690 giantsquid 8 1690 vidthekid22 9 1690

我有一个数据帧,
df
,如下所示:

    Rank    User
0   1690    samberman1212
1   1690    khogan3131
2   1690    narguero
3   1690    Awesemo
4   1690    Awesemo
5   1690    cptnspaulding
6   1690    Fluke7634
7   1690    giantsquid
8   1690    vidthekid22
9   1690    I_Slewfoot_U
10  1690    Mirage88
11  1690    Mirage88
12  1690    Mirage88
13  1690    Testosterown
14  1715    Anonymous
15  1715    Anonymous
我想使用每个用户在
df
中的次数。 因此,我创建了一个新的数据帧,
multiple

multiple=users_df.groupby("User").count()
print(multiple) 

             Rank
User    
Anonymous     2
Awesemo       2
Fluke7634     1
I_Slewfoot_U  1
Mirage88      3
Testosterown  1
cptnspaulding 1
giantsquid    1
khogan3131    1
narguero      1
samberman1212 1
vidthekid22   1
最后,我想提取频率计数以将其分配给变量,
count\u IP

 for i, row in users_df.iterrows():
                    rank = row['Rank']
                    user = row['User']

                    count_IP= ???
因此,我希望能够在
multiple
中查找此时循环中用户(
user
)的计数值。。。我尝试:

multiple.query('User==user')['Rank']
#AND 
multiple[multiple["User"]==user]["Rank"]
但是,这两种方法都不起作用。看起来用户列,即完成分组依据的变量,是不可调用的。因为当我询问列名时:

   list(multiple.columns.values)
    ['Rank']
我怎样才能解决这个问题

更新:


假设我想要获得的不是频率计数,而是:

     Rank       User               order of appearance
0   1690    samberman1212                  1
1   1690    khogan3131                     1
2   1690    narguero                       1
3   1690    Awesemo                        1
4   1690    Awesemo                        2
5   1690    cptnspaulding                  1
6   1690    Fluke7634                      1
7   1690    giantsquid                     1
8   1690    vidthekid22                    1
9   1690    I_Slewfoot_U                   1
10  1690    Mirage88                       1
11  1690    Mirage88                       2
12  1690    Mirage88                       3
13  1690    Testosterown                   1
14  1715    Anonymous                      1
15  1715    Anonymous                      2
更新#2:

我正在尝试使用更匿名的数据帧

ank User    order of appearence
0   1   boggslite   1
1   2   dokcash 1
2   3   loumister35 1
3   4   drhass  1
4   5   onem4nwolfpack  1
5   6   felder15    1
6   7   TwoStix 1
7   8   Mwise120    1
8   9   sdchickens  1
9   10  tastefultides   1
10  11  bric75  1
11  12  ycmmat  1
12  13  tastefultides   1
13  14  mpgoldberg16    1
14  14  mpgoldberg16    2
15  16  Cicima6709  1
16  17  LSUTom123   1
17  18  bunglerprime    1
18  18  Testosterown    1
19  20  dfsteams    1
20  20  yankeesfan2 1
21  22  tfinnerty   1
22  23  bellmar21   1
23  24  Awesemo 1
24  25  shocky26    1
25  25  tastefultides   1
26  27  Thanks4DaChedda 1
27  28  isupol  1
28  28  jwestphal708    1
29  30  giantsquid  1
30  31  boggslite   1
31  32  Thanks4DaChedda 1
32  33  dre87   1
33  33  BlarneyBoys 1
34  33  bric75  1
35  36  ezellmt 1
36  36  Cicima6709  1
37  38  ivanage 1
38  38  Thanks4DaChedda 1
39  40  nevs2904    1
40  41  gridironguru999 1
41  42  Anonymous   1
42  43  Anonymous   1
43  44  Anonymous   1
44  45  Anonymous   1
45  45  Anonymous   2
46  47  Anonymous   1
47  48  Anonymous   1
48  49  Anonymous   1
49  50  Anonymous   1

IIUC您想使用
df.groupby()

如果要删除重复值,则可以执行
df=df.drop_duplicates()

编辑外观顺序:

df['order of appearence']=df.groupby('User')['User'].transform(lambda x : x.duplicated().cumsum().add(1)) 
print(df)

    Rank           User  order of appearence
0   1690  samberman1212                    1
1   1690     khogan3131                    1
2   1690       narguero                    1
3   1690        Awesemo                    1
4   1690        Awesemo                    2
5   1690  cptnspaulding                    1
6   1690      Fluke7634                    1
7   1690     giantsquid                    1
8   1690    vidthekid22                    1
9   1690   I_Slewfoot_U                    1
10  1690       Mirage88                    1
11  1690       Mirage88                    2
12  1690       Mirage88                    3
13  1690   Testosterown                    1
14  1715      Anonymous                    1
15  1715      Anonymous                    2

你想要什么还不清楚。你能解释一下吗?最好是预期结果。比如说,user=Mirage88。我只想让count_IP等于3。我的for循环将遍历
df
的所有行,并且有一个变量user,它接受该行用户名称的值。因此,我想从
multiple
中提取计数,并将其分配给count\u IP。更清楚吗?除了频率计数之外,是否有可能获得外观顺序?除了没有相同排名的
Anonymous
用户外,其他一切都正常。对于排名不同的
Anonymous
,它的出现顺序从1开始。考虑到所有的
匿名
,我想增加出现次数。不起作用,
df[“外观顺序”]
的输出是相同的。它对我起作用。您是否添加了另一个名为
匿名
的用户以及不同的排名和检查
df[“外观顺序”]=df.groupby(['User','Rank'])['User'].transform(lambda x:x.duplicated().cumsum().add(1))
。将1716添加为匿名并选中Yes,我正在尝试使用更匿名的不同数据帧。我会把它放在更新部分的初始问题中,如果你能尝试一下,如果它有效的话,非常感谢
df['order of appearence']=df.groupby('User')['User'].transform(lambda x : x.duplicated().cumsum().add(1)) 
print(df)

    Rank           User  order of appearence
0   1690  samberman1212                    1
1   1690     khogan3131                    1
2   1690       narguero                    1
3   1690        Awesemo                    1
4   1690        Awesemo                    2
5   1690  cptnspaulding                    1
6   1690      Fluke7634                    1
7   1690     giantsquid                    1
8   1690    vidthekid22                    1
9   1690   I_Slewfoot_U                    1
10  1690       Mirage88                    1
11  1690       Mirage88                    2
12  1690       Mirage88                    3
13  1690   Testosterown                    1
14  1715      Anonymous                    1
15  1715      Anonymous                    2