2012-05-31 16 views
6

के साथ समय-भारित औसत पांडस 0.8 में टाइमसरीज़ के समय-भारित औसत की गणना करने का सबसे प्रभावी तरीका क्या है? उदाहरण के लिए, कहते हैं कि मैं df.y - df.x की समय-भारित औसत चाहते हैं के रूप में नीचे बनाया:पांडस

import pandas 
import numpy as np 
times = np.datetime64('2012-05-31 14:00') + np.timedelta64(1, 'ms') * np.cumsum(10**3 * np.random.exponential(size=10**6)) 
x = np.random.normal(size=10**6) 
y = np.random.normal(size=10**6) 
df = pandas.DataFrame({'x': x, 'y': y}, index=times) 

मैं इस ऑपरेशन की तरह करने के लिए बहुत आसान होना चाहिए लग रहा है, लेकिन सब कुछ मैं कोशिश की है कई गन्दा और धीमी गति से प्रकार रूपांतरण शामिल है।

उत्तर

3

आप df.index को पूर्णांक में परिवर्तित कर सकते हैं और औसत की गणना करने के लिए इसका उपयोग कर सकते हैं। एक शॉर्टकट asi8 प्रॉपर्टी है जो int64 मानों की एक सरणी देता है:

np.average(df.y - df.x, weights=df.index.asi8) 
+4

धन्यवाद! मैं समय अवधि के अनुसार मूल्यों को वज़न देना चाहता हूं, इसलिए मैंने 'np.average ((df.y - df.x) [: - 1], भार = np.diff (df.index.asi8) का उपयोग किया)' – user2303

संबंधित मुद्दे