मैं समूहबद्ध पांडा डेटाफ्रेम कॉलम में एक स्ट्रिंग की घटना को गिनना चाहता हूं।
मान लें कि मेरे पास निम्न डेटाफ्रेम है:
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