मेरे पास निम्नानुसार एक डेटासेट "नोडअप" है (समय के अनुसार क्रमबद्ध नहीं)। यह कच्चे डेटा से एक सबसेट है, सॉर्ट नहीं किया गया। मुझे हर 15 मिनट में एक रिकॉर्ड प्राप्त करने की आवश्यकता है, उदाहरण के लिए 08:15, 08:30, 08:45... लेकिन यह केवल रिकॉर्ड रखता है जब अधिभोग = 1।

मुझे क्या करना है अधिभोग = 0 प्राप्त करना है, और ऑटो पिछले और अगले मूल्यों (उसी डिवाइस से) के माध्यम से संबंधित नव उत्पन्न सीओ 2 और आर्द्रता भरता है। :

 device     occupancy                time         co2   humidity 
   1          1              2019-06-27 10:17:22    818     40
   2          1              2019-06-27 10:17:22    818     39
   3          1              2019-06-27 08:00:05    625     40
   4          1              2019-06-27 12:16:53    723     40
  ....
   1          1              2019-06-28 10:17:22    818     40
   2          1              2019-06-28 10:17:22    818     39
   3          1              2019-06-28 08:02:05    625     40
   4          1              2019-06-28 12:16:53    723     40
  ....

मैं जो चाहता हूं वह उदाहरण के रूप में है (पिछले डेटा के आधार पर 15 मिनट के रिकॉर्ड उत्पन्न करें, समय के अनुसार क्रमबद्ध करें):

 device     occupancy                time         co2   humidity 
   1          1              2019-06-27 08:15     818     40
   2          0              2019-06-27 08:15     XXX     XX
   3          0              2019-06-27 08:15     XXX     XX
   4          1              2019-06-27 08:15     723     40
  ....
   1          1              2019-06-27 08:30     830     45
   2          0              2019-06-27 08:30     XXX     XX

मैंने कोशिश की

time_first =nodup['time'].min()  
time_last = nodup['time'].max() 

mux = pd.MultiIndex.from_product([pd.date_range(time_first, time_last,freq='15min'), 
nodup['device'].unique()], names=['time', 'device'])

result = nodup.set_index(['time','device']).reindex(mux, fill_value=0).reset_index()

लेकिन यह चलता है:

ValueError: cannot handle a non-unique multi-index!

कोई इस पर मदद कर सकता है? जैसा कि मैं कच्चे डेटा की समीक्षा करता हूं, लाइन में कोई डुप्लीकेट नहीं है

-1
Victoria L 11 मार्च 2020, 04:09
10:17 8:15 क्यों हो जाता है? 12:16 8:15 क्यों हो जाता है? 8:02 8:15 क्यों हो जाता है?
 – 
Joran Beasley
11 मार्च 2020, 04:22
उत्तर के लिए thx। यहां डेटा पेस्ट करते समय ज्यादा ध्यान नहीं दिया। मैंने अपना प्रश्न संशोधित कर लिया है।
 – 
Victoria L
11 मार्च 2020, 05:10

2 जवाब

मैं नहीं जानता कि आप क्या पूछ रहे हैं, लेकिन मैं शीर्षक के आधार पर उत्तर देने जा रहा हूं

(मुझे समझ में नहीं आता कि उदाहरण के लिए 10:17 क्यों 8:15 हो जाएगा)

nodup = pandas.DataFrame({
   'time': pandas.date_range('2019-01-03 22:12:13','2019-05-08 11:11:27',periods=1000)
})

हर समय बनाने के लिए मिनटों के लिए ":00" है

new_times = nodup['time'].dt.floor("1h")
0
Joran Beasley 11 मार्च 2020, 04:27

आप डिवाइस को एक इंडेक्स के रूप में उपयोग नहीं कर सकते क्योंकि यह एक अद्वितीय इंडेक्स नहीं है!

अनुक्रमणिका एक अद्वितीय संख्या होनी चाहिए जिसे कॉलम में दोहराया नहीं जा सकता।

-1
Jovani 11 मार्च 2020, 04:16