2016-07-10 66 views
2

我有一个美国民意调查数据的数据框,我试图每天填写。我无法弄清楚如何去做。填充多指标大熊猫数据框

这里是原始数据(数据帧不一定是多指数)。

    Democratic   Other Republican 
Date  State             
2008-11-04 AZ  0.451153  0.012495 0.536352 
2012-05-20 AZ  0.462500  0.000000 0.537500 
... 
2008-11-04 WI  0.562178  0.014686 0.423137 
2012-11-03 WI  0.515152  0.000000 0.484848 

我想垫出来,所以它看起来是这样的:

    Democratic   Other Republican 
Date  State             
2008-11-04 AZ  0.451153  0.012495 0.536352 
2008-11-05 AZ  0.451153  0.012495 0.536352 
... 
2012-05-20 AZ  0.462500  0.000000 0.537500 
2012-05-21 AZ  0.462500  0.000000 0.537500 
... 
2012-11-06 AZ  0.462500  0.000000 0.537500 
... 
2008-11-04 WI  0.562178  0.014686 0.423137 
2008-11-05 WI  0.562178  0.014686 0.423137 
... 
2012-11-03 WI  0.515152  0.000000 0.484848 
2012-11-04 WI  0.515152  0.000000 0.484848 
2012-11-05 WI  0.515152  0.000000 0.484848 
2012-11-06 WI  0.515152  0.000000 0.484848 

我试着这样做:

election_range = pd.date_range('2008-11-06', '2012-11-06') 
dailies.reindex(election_range, method='pad') 

,但我得到这个错误:

ValueError: cannot include dtype 'M' in a buffer 

我试着在日期上索引,但我得到了该索引不是唯一的错误。

显而易见的事情是分割帧状态,重新索引,并结合帧,但必须有一个更好的方式来做到这一点。有没有人有任何想法?

回答

0

尝试:

start = df.index.levels[0].min() 
end = df.index.levels[0].max() 
days = pd.date_range(start, end) 
df.unstack().reindex(days).ffill().stack().sort_index(level=[1, 0]) 
+0

感谢piRSquared - 我认为这种做法是可能的工作。你写的代码不适合我,但它足够接近。我会得到这个工作,并在这里发布答案,然后将问题标记为已解决。我感谢你的帮助 - 谢谢。 –

+0

我的代码中有一些错误,我必须修复,一旦我修复它们,这很好。 –