2015-10-21 12 views
23

में दो कॉलम (चर) पर आधारित आवृत्ति गणना प्राप्त करें हैलो मेरे पास निम्न डेटाफ्रेम है।पायथन: पांडा डेटाफ्रेम

Group   Size 

    Short   Small 
    Short   Small 
    Moderate  Medium 
    Moderate  Small 
    Tall   Large 

मैं कितने समय एक ही पंक्ति dataframe में प्रकट होता है की आवृत्ति गणना करना चाहते हैं।

Group   Size  Time 

    Short   Small  2 
    Moderate  Medium  1 
    Moderate  Small  1 
    Tall   Large  1 

उत्तर

41

आप GroupBy के size उपयोग कर सकते हैं:

In [11]: df.groupby(["Group", "Size"]).size() 
Out[11]: 
Group  Size 
Moderate Medium 1 
      Small  1 
Short  Small  2 
Tall  Large  1 
dtype: int64 

In [12]: df.groupby(["Group", "Size"]).size().reset_index(name="Time") 
Out[12]: 
     Group Size Time 
0 Moderate Medium  1 
1 Moderate Small  1 
2  Short Small  2 
3  Tall Large  1 
+0

धन्यवाद डाल दिया। आवृत्ति ("समय") के आधार पर शीर्ष के (= 20) मानों को चुनने के लिए एक मामूली जोड़ा: df.groupby (["समूह", "आकार"])। आकार()। Reset_index (name = "time") .sort_values ​​(= 'टाइम' से, आरोही = false) .head (20); –

10

तुम भी कोशिश कर सकते हैं pd.crosstab()

Group   Size 

Short   Small 
Short   Small 
Moderate  Medium 
Moderate  Small 
Tall   Large 

pd.crosstab(df.Group,df.Size) 


Size  Large Medium Small 
Group       
Moderate  0  1  1 
Short   0  0  2 
Tall   1  0  0 

संपादित करें: अपने बाहर निकलने के लिए आदेश में

pd.crosstab(df.Group,df.Size).replace(0,np.nan).\ 
    stack().reset_index().rename(columns={0:'Time'}) 
Out[591]: 
     Group Size Time 
0 Moderate Medium 1.0 
1 Moderate Small 1.0 
2  Short Small 2.0 
3  Tall Large 1.0 
+1

अच्छा। आप मामूली गणना प्राप्त करने के लिए 'मार्जिन = ट्रू' भी जोड़ सकते हैं! –

संबंधित मुद्दे