/ / pandas groupby गणना कॉलम पर स्ट्रिंग घटना - पायथन, पांडा, गिनती, समूह द्वारा, डेटा फ्रेम

कॉलम पर पांडस ग्रुपबी गिनती स्ट्रिंग घटना - पायथन, पांडा, गिनती, समूह-बाय, डेटाफ्रेम

मैं समूहबद्ध पांडा डेटाफ्रेम कॉलम में एक स्ट्रिंग की घटना को गिनना चाहता हूं।

मान लें कि मेरे पास निम्न डेटाफ्रेम है:

catA    catB    scores
A       X       6-4 RET
A       X       6-4 6-4
A       Y       6-3 RET
B       Z       6-0 RET
B       Z       6-1 RET

सबसे पहले, मैं समूह करना चाहता हूं catA तथा catB। और इन समूहों में से प्रत्येक के लिए मैं घटना की गिनती करना चाहता हूं RET में scores स्तंभ।

नतीजा कुछ ऐसा दिखना चाहिए:

catA    catB    RET
A       X       1
A       Y       1
B       Z       2

दो स्तंभों द्वारा समूह करना आसान है: grouped = df.groupby(["catA", "catB"])

लेकिन अगला क्या है?

उत्तर:

उत्तर № 1 के लिए 10

कॉल apply पर "स्कोर" कॉलम पर groupby ऑब्जेक्ट और वेक्टरिस का उपयोग करें str तरीका contains, फ़िल्टर करने के लिए इसका इस्तेमाल करें group और कॉल करें count:

In [34]:
df.groupby(["catA", "catB"])["scores"].apply(lambda x: x[x.str.contains("RET")].count())

Out[34]:
catA  catB
A     X       1
Y       1
B     Z       2
Name: scores, dtype: int64

कॉलम उपयोग के रूप में असाइन करने के लिए transform ताकि समेकन श्रृंखला के साथ एक श्रृंखला लौटाता है जो मूल डीएफ से गठबंधन है:

In [35]:
df["count"] = df.groupby(["catA", "catB"])["scores"].transform(lambda x: x[x.str.contains("RET")].count())
df

Out[35]:
catA catB   scores count
0    A    X  6-4 RET     1
1    A    X  6-4 6-4     1
2    A    Y  6-3 RET     1
3    B    Z  6-0 RET     2
4    B    Z  6-1 RET     2