मेरे पास एक डेटा फ्रेम है, 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_IP को असाइन करने के लिए फ़्रीक्वेंसी काउंट निकालना चाहूंगा:

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

                    count_IP= ???

इस प्रकार, मैं उस समय लूप में उपयोगकर्ता (user) के लिए गिनती मूल्य के लिए multiple देखने में सक्षम होना चाहता हूं ... मैं कोशिश करता हूं:

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
2
Jagr 31 जिंदा 2019, 08:07

1 उत्तर

सबसे बढ़िया उत्तर

IIUC आप df.groupby() को के साथ करना चाहते हैं transform()

df['count_IP']=df.groupby('User').transform('count')
print(df)

    Rank           User  count_IP
0   1690  samberman1212         1
1   1690     khogan3131         1
2   1690       narguero         1
3   1690        Awesemo         2
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         3
11  1690       Mirage88         3
12  1690       Mirage88         3
13  1690   Testosterown         1
14  1715      Anonymous         2
15  1715      Anonymous         2

यदि आप डुप्लिकेट मानों को हटाना चाहते हैं तो आप 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
2
anky 31 जिंदा 2019, 11:34