2016-10-23 2 views
3

У меня есть несколько фреймов данных, которые в настоящее время имеют все данные за конец месяца.Как превратить в "конец месяца"?

теперь я использовал следующий сценарий для импорта данных Финансы:

import csv 
import pandas as pd 
import numpy as np 
import urllib.request 

urllib.request.urlretrieve( 
    'http://chart.finance.yahoo.com/table.csv?s=^GSPC&a=4&b=1&c=2013&d=5&e=1&f=2016&g=m&ignore=.csv', 
    'gspc.csv' 
) 

table = pd.read_csv('gspc.csv') 

    Date Open High Low Close Volume Adj Close 
49 2012-05-01 1,398 1,415 1,292 1,310 4158095900 1,310 
48 2012-06-01 1,310 1,363 1,267 1,362 4103472300 1,362 
47 2012-07-02 1,362 1,392 1,325 1,379 3663113300 1,379 

Как я уже сказал, мне нужно, чтобы получить эти данные в конце периода месяца. I.e.

Date Open High Low Close Volume Adj Close 
49 2012-05-31 1,398 1,415 1,292 1,310 4158095900 1,310 
48 2012-06-30 1,310 1,363 1,267 1,362 4103472300 1,362 
47 2012-07-31 1,362 1,392 1,325 1,379 3663113300 1,379 

Я попытался

table['Date'] = pd.to_datetime(table['Date']) 
table.set_index('Date').resample('M') 
table 

, но не увенчались успехом, хотя и "М" должно быть "month end frequency".

ответ

3

Это должно быть то, что вы ищете

table['Date'] = table['Date'] - pd.tseries.offsets.MonthEnd() 
+2

Я думаю, что это должно быть: 'table.Date - = pd.offsets.MonthEnd()' – MaxU

+0

Это один работает, спасибо! Что такое - = используется? – Rnaldinho

+0

@ Rnaldinho, 'a - = b' - это короткая форма' a = a - b' – MaxU