एक क्लास असाइनमेंट पर काम करना।

हमारे वर्तमान डेटासेट में ऐसी जानकारी है जो इस तरह दिखती है:

    Item ID      Item Name                                  Price
0   108          Extraction, Quickblade Of Trembling Hands  3.53
1   143          Frenzied Scimitar                          1.56
2   92           Final Critic                               4.88
3   100          Blindscythe                                3.27
4   131          Fury                                       1.44

हमें दो मानों के आधार पर समूहबद्ध करने के लिए कहा गया था, जो मैंने किया है।

item_df = popcolumns_df.groupby(["Item ID","Item Name"])  

हालांकि, मुझे इस डेटाफ्रेम में ग्रुपबी कार्यों को जोड़ने की कोशिश करने में समस्याएं आ रही हैं। उदाहरण के लिए, जब मैं गिनती चलाता हूं, तो गिनती कीमत को बदल देती है। एक प्रयास ने मूल्य कॉलम के सभी डेटा को काउंट के साथ बदल दिया।

item_counts = item_df.count().reset_index() 

आउटपुट:

    Item ID     Item Name           Price
0   0           Splinter             4
1   1           Crucifer             3
2   2           Verdict              6
3   3           Phantomlight         6
4   4           Bloodlord's Fetish   5

प्रयास 2 ने वही किया:

item_counts = item_df.size().reset_index(name="Counts")

मेरा वांछित आउटपुट है:

     Item ID    Item Name                Price    Count   Revenue
0    108        Extraction, Quickblade   3.53     12      42.36
1    143        Frenzied Scimitar        1.56     3        4.68
2    92         Final Critic             4.88     2        9.76
3    100        Blindscythe              3.27     1        3.27
4    131        Fury                     1.44     5        7.20

मैं राजस्व प्राप्त करने के लिए समूहों पर सिर्फ एक राशि का उपयोग करूंगा। मैं इस पर कुछ घंटों के लिए फंस गया हूं, इसलिए किसी भी मदद की बहुत सराहना की जाएगी!

0
Betsy Shane 17 पद 2018, 03:47

2 जवाब

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

यदि किन्हीं दो समान वस्तुओं की कीमतें समान हैं, तो आप "Price" को अपने समूह में शामिल कर सकते हैं, और फिर समूह आकार:

summary = popcolumns_df \
    .groupby(["Item ID", "Item Name", "Price"]) \
    .size() \
    .rename("Count") \
    .reset_index()

summary['Revenue'] = summary['Count'] * summary['Price']

pd.Series.rename को कॉल करने से अंतिम डेटाफ़्रेम में कॉलम का नाम "Count" हो जाता है।

0
Edgar Ramírez Mondragón 17 पद 2018, 06:36

मुझे लगता है कि आप ग्रुपबी की transform विधि ढूंढ रहे हैं। यह आपके डेटा के मूल स्तर पर समग्र मीट्रिक देता है।

उदाहरण के लिए, कुछ समूहों की संख्या के लिए अपने मूल डेटा में एक नया कॉलम बनाने के लिए:

df['group_level_count'] = df.groupby(['foo', 'bar']).transform('count')  # or 'size' I think, depending whether you want to count NaNs

संबंधित: * कैसे पांडा समूह में प्रति समूह (और अन्य आंकड़े) पंक्तियों की संख्या गिनने के लिए? * https://pandas.pydata.org/pandas-docs/stable /groupby.html#transformation

0
grisaitis 30 पद 2018, 22:52