एक और पांडा प्रश्न काम नहीं करता है।पांडा 'ट्रांसफॉर्म सॉर्टिंग ग्रुपबी आउटपुट
मान लीजिए मैं सुझावों के बारे में कुछ जानकारी है:
डेटा विश्लेषण और पांडा के बारे में पढ़ना वेस Mckinney उत्तम पुस्तक, मैं निम्नलिखित बात यह है कि मैंने सोचा था कि काम करना चाहिए का सामना करना पड़ा।
In [119]:
tips.head()
Out[119]:
total_bill tip sex smoker day time size tip_pct
0 16.99 1.01 Female False Sun Dinner 2 0.059447
1 10.34 1.66 Male False Sun Dinner 3 0.160542
2 21.01 3.50 Male False Sun Dinner 3 0.166587
3 23.68 3.31 Male False Sun Dinner 2 0.139780
4 24.59 3.61 Female False Sun Dinner 4 0.146808
और मैं कुल बिल के संबंध में पांच सबसे बड़े सुझावों को पता है, कि है, धूम्रपान करने वालों और गैर धूम्रपान करने वालों के लिए tip_pct
अलग करना चाहते हैं। तो यह काम करता है:
def top(df, n=5, column='tip_pct'):
return df.sort_index(by=column)[-n:]
In [101]:
tips.groupby('smoker').apply(top)
Out[101]:
total_bill tip sex smoker day time size tip_pct
smoker
False 88 24.71 5.85 Male False Thur Lunch 2 0.236746
185 20.69 5.00 Male False Sun Dinner 5 0.241663
51 10.29 2.60 Female False Sun Dinner 2 0.252672
149 7.51 2.00 Male False Thur Lunch 2 0.266312
232 11.61 3.39 Male False Sat Dinner 2 0.291990
True 109 14.31 4.00 Female True Sat Dinner 2 0.279525
183 23.17 6.50 Male True Sun Dinner 4 0.280535
67 3.07 1.00 Female True Sat Dinner 1 0.325733
178 9.60 4.00 Female True Sun Dinner 2 0.416667
172 7.25 5.15 Male True Sun Dinner 2 0.710345
अच्छा पर्याप्त है, लेकिन फिर मैं पांडा उपयोग करने के लिए 'इस तरह भी ऐसा ही करने को बदलने चाहता था:
def top_all(df):
return df.sort_index(by='tip_pct')
tips.groupby('smoker').transform(top_all)
लेकिन इसके बजाय मैं इस मिल:
TypeError: Transform function invalid for data types
क्यूं कर? मुझे पता है कि ट्रांसफॉर्म को उसी आयाम की एक सरणी वापस करने की आवश्यकता है जो इसे इनपुट के रूप में स्वीकार करता है, इसलिए मैंने सोचा कि मैं उस आवश्यकता के साथ अनुपालन कर रहा हूं, मूल डेटाफ्रेम के दोनों स्लाइस (धूम्रपान करने वालों और धूम्रपान करने वालों) को अपने संबंधित आयामों को बदले बिना सॉर्ट करना । क्या कोई समझा सकता है कि यह क्यों विफल रहा?
उत्कृष्ट उत्तर। आपका बहुत बहुत धन्यवाद! –
इतना खराब दस्तावेज क्यों बदल रहा है? ये मुझे पागल कर रहा है।मुझे नहीं लगता कि आपके पास यह सही है हालांकि (हालांकि मुझे नहीं पता कि यह वास्तव में कैसे काम कर रहा है) जब आप अपने कार्यों में प्रिंट स्टेटमेंट डालते हैं तो यह स्पष्ट लगता है कि ट्रांसफॉर्म वास्तव में श्रृंखला और डेटा फ्रेम के रूप में कॉलम पास कर रहा है। यह वास्तव में डरावना है और मैं समझना चाहता हूं कि दृश्यों के पीछे क्या चल रहा है लेकिन वास्तव में इसे कैसे कार्यान्वित किया जाता है इस पर कोई जानकारी नहीं मिल सकती है। –