ये दो चर में सहेजे गए मेरे दो डेटाफ्रेम हैं:
> print(df.head())
>
club_name tr_jan tr_dec year
0 ADO Den Haag 1368 1422 2010
1 ADO Den Haag 1455 1477 2011
2 ADO Den Haag 1461 1443 2012
3 ADO Den Haag 1437 1383 2013
4 ADO Den Haag 1386 1422 2014
> print(rankingdf.head())
>
club_name ranking year
0 ADO Den Haag 12 2010
1 ADO Den Haag 13 2011
2 ADO Den Haag 11 2012
3 ADO Den Haag 14 2013
4 ADO Den Haag 17 2014
मैं इस कोड का उपयोग करके इन दोनों को मर्ज करने की कोशिश कर रहा हूं:
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
कैसे = 'बाएं' को जोड़ा जाता है, क्योंकि मेरे मानक df की तुलना में मेरी रैंकिंग_df में कम डाटापॉइंट हैं।
अपेक्षित व्यवहार इस प्रकार है:
> print(new_df.head())
>
club_name tr_jan tr_dec year ranking
0 ADO Den Haag 1368 1422 2010 12
1 ADO Den Haag 1455 1477 2011 13
2 ADO Den Haag 1461 1443 2012 11
3 ADO Den Haag 1437 1383 2013 14
4 ADO Den Haag 1386 1422 2014 17
लेकिन मुझे यह त्रुटि मिली:
ValueError: आप ऑब्जेक्ट और int64 कॉलम पर मर्ज करने का प्रयास कर रहे हैं। यदि आप आगे बढ़ना चाहते हैं तो आपको pd.concat का उपयोग करना चाहिए
लेकिन मैं कंकड़ का उपयोग नहीं करना चाहता हूं क्योंकि मैं पेड़ों को मर्ज करना चाहता हूं न कि उन्हें बस जोड़ना चाहिए।
एक और व्यवहार जो मेरे दिमाग में अजीब है, वह यह है कि मेरा कोड काम करता है अगर मैं पहले df को .csv पर सहेजता हूं और फिर .csv को डेटाफ्रेम में लोड करता हूं।
उस के लिए कोड:
df = pd.DataFrame(data_points, columns=['club_name', 'tr_jan', 'tr_dec', 'year'])
df.to_csv('preliminary.csv')
df = pd.read_csv('preliminary.csv', index_col=0)
ranking_df = pd.DataFrame(rankings, columns=['club_name', 'ranking', 'year'])
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
मुझे लगता है कि इसे index_col = 0 पैरामीटर के साथ करना है। लेकिन मुझे इसे बचाने के बिना इसे ठीक करने का कोई विचार नहीं है, यह बहुत ज्यादा मायने नहीं रखता है लेकिन एक तरह का झुंझलाहट है जो मुझे करना पड़ता है।