में दिनांक सीमाएं दिन के लिए न्यूमपी और डेट्यूटिल के साथ लड़ने के बाद, मैंने हाल ही में अद्भुत पांडा पुस्तकालय की खोज की। मैं प्रलेखन और स्रोत कोड के माध्यम से पोरिंग कर रहा हूं, लेकिन मैं सही ब्रेकपॉइंट्स पर इंडेक्स जेनरेट करने के लिए date_range()
कैसे प्राप्त कर सकता हूं, यह नहीं समझ सकता।पांडस
from datetime import date
import pandas as pd
start = date('2012-01-15')
end = date('2012-09-20')
# 'M' is month-end, instead I need same-day-of-month
date_range(start, end, freq='M')
मुझे क्या करना चाहते हैं:
2012-01-15
2012-02-15
2012-03-15
...
2012-09-15
मुझे क्या मिलेगा:
2012-01-31
2012-02-29
2012-03-31
...
2012-08-31
मैं महीने के आकार हिस्सा है कि एक महीने में दिनों की चर संख्या के लिए खाता होना चाहिए। यह dateutil.rrule के साथ संभव है:
rrule(freq=MONTHLY, dtstart=start, bymonthday=(start.day, -1), bysetpos=1)
बदसूरत और अस्पष्ट है, लेकिन यह काम करता है। मैं इसे पांडा के साथ कैसे कर सकता हूं? मैंने date_range()
और period_range()
दोनों के साथ खेला है, अब तक कोई भाग्य नहीं है।
मेरे वास्तविक लक्ष्य groupby
, crosstab
और/या resample
उपयोग करने के लिए रकम/साधन/अवधि के भीतर अलग-अलग प्रविष्टियों में से आदि के आधार पर प्रत्येक अवधि के लिए मूल्यों की गणना करने के लिए है। दूसरे शब्दों में, मैं से डेटा को बदलने के लिए चाहते हैं:
total
2012-01-10 00:01 50
2012-01-15 01:01 55
2012-03-11 00:01 60
2012-04-28 00:01 80
#Hypothetical usage
dataframe.resample('total', how='sum', freq='M', start='2012-01-09', end='2012-04-15')
total
2012-01-09 105 # Values summed
2012-02-09 0 # Missing from dataframe
2012-03-09 60
2012-04-09 0 # Data past end date, not counted
यह देखते हुए कि पांडा एक वित्तीय विश्लेषण उपकरण के रूप में जन्म लिया है, मैं लगभग निश्चित है कि वहाँ क्या करने के लिए एक सरल और तेज़ तरीका कर रहा हूँ इस। मदद की सराहना की!
धन्यवाद, इस चाल मैं एक समाधान rrule हैक के आधार पर बनाने की जरूरत हो सकती है। हालांकि, यह किसी सीमा पर पुन: प्रयास करने में मदद नहीं करता है, क्योंकि पुनरावृत्ति अभी भी AFAIK महीने की शुरुआत में गठित डिब्बे का उपयोग करेगा। – knite
यदि आप लगातार दिनों से स्थानांतरित करने जा रहे हैं तो इसे 'एमएस' शुरू करने के लिए अधिक समझदारी मिलती है: 'pd.date_range (प्रारंभ, अंत, freq = 'MS')। Shift (15, freq = pd। datetools.day) ' –