मेरे पास डेटाफ्रेम है:
A B C
date
2021-01-01 1 nan 1
2021-01-23 nan 1 1
2021-02-03 1 nan 1
मैं हर महीने की शुरुआत में सभी कॉलम में "1" कैसे जोड़ सकता हूं? (ध्यान दें कि मैं इसे त्रैमासिक रूप से भी करना चाहता हूं) डेटाफ्रेम को इस तरह दिखना चाहिए:
A B C
date
2021-01-01 2 nan 2
2021-01-23 nan 1 1
2021-02-01 nan 1 1
2021-02-03 1 nan 1
महीने की शुरुआत में पिछले महीने के अंतिम उदाहरण के स्थान पर "नान" होना चाहिए।
2 जवाब
IIUC तर्क, आप कर सकते हैं:
# ensure datetime
df.index = pd.to_datetime(df.index)
# fill missing starts of month
idx = pd.date_range(df.index.min(), df.index.max(), freq='MS')
df = df.reindex(df.index.union(idx))
# update starts of month
prev = df.shift(1).loc[idx] # get last data of previous month
df.loc[idx] = df.loc[idx].add(1).combine_first(prev) # increment/fill
आउटपुट:
A B C
2021-01-01 2.0 NaN 2.0
2021-01-23 NaN 1.0 1.0
2021-02-01 NaN 1.0 1.0
2021-02-03 1.0 NaN 1.0
df[(df.index.is_month_end) & (df.index >= df.first_valid_index())]+=1
ढ़ूँढ निकाला। और, तिमाही के लिए, यह .is_quarter_end
होगा
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
2021-02-01
के लिएA
कॉलमNaN
क्यों है?2021-02-01 nan 1 1
की अपेक्षा क्यों करते हैं2021-02-01 nan 2 2
की नहीं? क्योंकि यह एक महीने की शुरुआत है। या आपने पंक्ति जोड़ दी क्योंकि यह इनपुट डेटा से गायब है?