मैं डेटाबेस के समान कॉलम से पिछले डेटा वाले कॉलम बना रहा हूं। उसी दिन की तरह, मुझे पहले दिन का Y
मान और सप्ताह के पहले दिन का मान चाहिए। इसलिए:
x = df.copy()
x["Date"] = pd.to_datetime(df.rename(columns={"Año":"Year","Mes":"Month","Dia":"Day"})[["Year","Month","Day"]])
y = x[["Date","Y"]]
y.rename(columns={"Y":"Y_DiaAnterior"}, inplace=True)
y["Date"] = y["Date"] + dt.timedelta(days=1)
z = pd.merge(x,y,on=["Date"], how="left")
display(y.head()) # First merge result
a = x[["Date","Y"]]
a.rename(columns={"Y":"Y_DiaSemAnterior"}, inplace=True)
a["Date"] = a["Date"] + dt.timedelta(days=7)
z = pd.merge(x,a,on=["Date"], how="left")
z.head() # Second merge result
जहां y df
अंतिम दिन के डेटा के साथ Y
कॉलम बनाने के लिए एक सहायक df
है, और a df
कॉलम बनाने के लिए एक सहायक df
है Y
समान-दिन-पिछले सप्ताह डेटा के साथ।
जब मैं उन्हें अलग-अलग मर्ज करता हूं तो यह पूरी तरह से काम करता है, लेकिन जब मैं उन सभी को मर्ज करना चाहता हूं (पहले x के साथ y और फिर x के साथ a) x के साथ y का मर्ज 'डिलीट' हो जाता है, जैसा कि आप देख सकते हैं कि Y_DiaAnterior
कॉलम अंतिम df
(या 'दूसरा मर्ज परिणाम') में नहीं हैं, भले ही मैंने उन्हें पहले ही मर्ज कर दिया हो।
तो, मैं यह कैसे कर सकता हूं कि अंतिम df
में Y_DiaAnterior
और Y_DiaSemAnterior
चर हैं?
1 उत्तर
क्योंकि आप अपने z
को x
और a
के नए मर्ज से ओवरराइट कर रहे हैं। साथ ही आप अपने कोड में पहले मर्ज के परिणाम नहीं दिखा रहे हैं क्योंकि आप y.head()
का उपयोग कर रहे हैं।
यदि आप सभी 3 df के मर्ज परिणाम चाहते हैं, तो आप मर्ज की श्रृंखला बना सकते हैं:
# prep x
x = df.copy()
x["Date"] = pd.to_datetime(df.rename(columns={"Año":"Year", "Mes":"Month", "Dia":"Day"})[["Year", "Month", "Day"]])
# prep y
y = x[["Date", "Y"]].copy()
y.rename(columns={"Y":"Y_DiaAnterior"}, inplace=True)
y["Date"] = y["Date"] + dt.timedelta(days=1)
# prep a
a = x[["Date", "Y"]].copy()
a.rename(columns={"Y":"Y_DiaSemAnterior"}, inplace=True)
a["Date"] = a["Date"] + dt.timedelta(days=7)
# now merge all
z = x.merge(y, on='Date', how='left') \
.merge(a, on='Date', how='left')
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।