पर विलय करें मैं पांडों में डेटाफ्रेम पर विभिन्न आंकड़े कैलकुलेशन को करने और फिर मूल डेटाफ्रेम पर विलय करने की कोशिश कर रहा हूं, हालांकि, मैं मुद्दों पर चल रहा हूं।पांडस - ग्रुपबी और फिर मूल तालिका
SELECT EID,
PCODE,
SUM(PVALUE) AS PVALUE,
SUM(SQRT(SC*EXP(SC-1))) AS SC,
SUM(SI) AS SI,
SUM(EE) AS EE
INTO foo_bar_grp
FROM foo_bar
GROUP BY EID, PCODE
और फिर मूल मेज पर शामिल होने:
SELECT *
FROM foo_bar_grp INNER JOIN
foo_bar ON foo_bar.EID = foo_bar_grp.EID
AND foo_bar.PCODE = foo_bar_grp.PCODE
ये कदम उठाएँ: >>
pol_dict = {'PID':[1,1,2,2],
'EID':[123,123,123,123],
'PCODE':['GU','GR','GU','GR'],
'PVALUE':[100,50,150,300],
'SI':[400,40,140,140],
'SC':[230,23,213,213],
'EE':[10000,10000,2000,30000],
}
pol_df = DataFrame(pol_dict)
pol_df
: डेटा में लोड हो रहा है यह एसक्यूएल में कोड बराबर है
आउट: >>
EID EE PCODE PID PVALUE SC SI
0 123 10000 GU 1 100 230 400
1 123 10000 GR 1 50 23 40
2 123 2000 GU 2 150 213 140
3 123 30000 GR 2 300 213 140
चरण 2: गिना जा रहा है और डेटा पर समूहीकरण: इस प्रकार
मेरे पांडा कोड है:
#create aggregation dataframe
poagg_df = pol_df
del poagg_df['PID']
po_grouped_df = poagg_df.groupby(['EID','PCODE'])
#generate acc level aggregate
acc_df = po_grouped_df.agg({
'PVALUE' : np.sum,
'SI' : lambda x: np.sqrt(np.sum(x * np.exp(x-1))),
'SC' : np.sum,
'EE' : np.sum
})
यह ठीक काम करता है जब तक मैं मूल मेज पर शामिल करना चाहते हैं:
IN: >>
po_account_df = pd.merge(acc_df, po_df, on=['EID','PCODE'], how='inner',suffixes=('_Acc','_Po'))
बाहर: >> KeyError: u'n ओ आइटम नामित ईआईडी '
किसी कारण से, समूहित डेटाफ्रेम मूल तालिका में वापस शामिल नहीं हो सकता है। मैंने समूह कॉलम को वास्तविक कॉलम में बदलने की कोशिश करने के तरीकों पर ध्यान दिया है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।
pol_acc_df['PVALUE_PCT'] = np.round(pol_acc_df.PVALUE_Po/pol_acc_df.PVALUE_Acc,4)
धन्यवाद:
कृपया ध्यान दें, अंतिम लक्ष्य प्रत्येक स्तंभ के लिए प्रतिशत (pvalue, एसआई, अनुसूचित जाति, ईई) आईई खोजने के लिए सक्षम होने के लिए है!