मेरे पास डेटा की अलग-अलग फ़ाइलें हैं और उन्हें दिनांक कॉलम के आधार पर एक साथ मर्ज करने की आवश्यकता है। अगर मेरे पास केवल दो फाइलें थीं, तो मैं df1.merge(df2, on='date')
का उपयोग कर सकता हूं, अगर मैं तीन फाइलों के साथ प्रयास करता हूं, तो मैं df1.merge(df2.merge(df3, on='date'), on='date')
का उपयोग करता हूं, लेकिन कई फाइलें मर्ज करने के लिए होती हैं।पायथन: पांडा एकाधिक डेटाफ्रेम मर्ज करें
डेटाफ्रेम में एक कॉलम आम है - "तिथि", लेकिन समान संख्या में पंक्तियां और न ही कॉलम हैं और मुझे केवल प्रत्येक डेटाफ्रेम के लिए सामान्य तिथियों की आवश्यकता है।
तो, मैं एक रिकर्सन फ़ंक्शन लिखने की कोशिश कर रहा हूं जो सभी डेटा के साथ डेटाफ्रेम देता है लेकिन यह काम नहीं करता है। मुझे एकाधिक डेटा फ्रेम कैसे मर्ज करना चाहिए?
मैंने अलग-अलग तरीकों की कोशिश की और out of range
, keyerror 0/1/2/3
और can not merge DataFrame with instance of type <class 'NoneType'>
जैसी त्रुटियां मिलीं।
यह स्क्रिप्ट है:
dfs = [df1, df2, df3] # list of dataframes
def mergefiles(dfs, countfiles, i=0):
if i == (countfiles - 2): # it gets to the second to last and merges it with the last
return
dfm = dfs[i].merge(mergefiles(dfs[i+1], countfiles, i=i+1), on='date')
return dfm
print(mergefiles(dfs, len(dfs)))
एक उदाहरण: file_1:
May 19, 2017;1,200.00;0.1%
May 18, 2017;1,100.00;0.1%
May 17, 2017;1,000.00;0.1%
May 15,2017;900.00;0.2%
file_2:
May 20, 2017;2,200.00;1000000;0.2%
May 18, 2017;2,100.00;1590000;0.2%
May 16, 2017;2,000.00;1230000;0.2%
May 15,2017;1,900.00;1000000;0.2%
file_3:
May 21, 2017;3,200.00;2000000;0.2%
May 17, 2017;3,100.00;2590000;0.2%
May 16, 2017;3,000.00;2230000;0.2%
May 15,2017;2,900.00;2000000;0.2%
उम्मीद मर्ज परिणाम:
May 15,2017;2,900.00;2000000;0.2%
और आपका अपेक्षित परिणाम क्या है? – zipa
@zipa, बस पोस्ट संपादित किया। मर्ज परिणाम अपेक्षित परिणाम है। –
उत्तर की जांच करें। सबसे समझदार और आसान एक। – everestial007