How to get the element of the output from the function pd.Series().rolling()?
Question:
I’m writing a simple function to calculate the moving average. For instance, if there is a list [1, 2, 3, 7, 9], then the moving average with the window size of 3, assuming the length of the output is the same, should be [nan, nan, 2, 4, 6.33]. I searched the web and found that ma = pd.Series(a).rolling(3).mean().tolist()
can get the job done.
I guess what the rolling method did is generates a list [[nan], [nan], [1,2,3], [2,3,7],[3,7,9]]. But how can I get this list from the object generated by pd.Series(a).rolling(3)
?
Answers:
Use list comprehension:
L = [list(x) for x in pd.Series(a).rolling(3)]
print (L)
[[1], [1, 2], [1, 2, 3], [2, 3, 7], [3, 7, 9]]
Missing values are possible with:
N = 3
L = [list(x) if i >= N else [np.nan] for i, x in enumerate(pd.Series(a).rolling(N),1)]
print (L)
[[nan], [nan], [1, 2, 3], [2, 3, 7], [3, 7, 9]]
I’m writing a simple function to calculate the moving average. For instance, if there is a list [1, 2, 3, 7, 9], then the moving average with the window size of 3, assuming the length of the output is the same, should be [nan, nan, 2, 4, 6.33]. I searched the web and found that ma = pd.Series(a).rolling(3).mean().tolist()
can get the job done.
I guess what the rolling method did is generates a list [[nan], [nan], [1,2,3], [2,3,7],[3,7,9]]. But how can I get this list from the object generated by pd.Series(a).rolling(3)
?
Use list comprehension:
L = [list(x) for x in pd.Series(a).rolling(3)]
print (L)
[[1], [1, 2], [1, 2, 3], [2, 3, 7], [3, 7, 9]]
Missing values are possible with:
N = 3
L = [list(x) if i >= N else [np.nan] for i, x in enumerate(pd.Series(a).rolling(N),1)]
print (L)
[[nan], [nan], [1, 2, 3], [2, 3, 7], [3, 7, 9]]