操作数据框架



我有以下数据框df,其中有3列:日期,值和主题。我想创建一个新的数据框df1,其中主题是列,并按天索引,每个主题每天都有自己的值。我的问题是我不知道如何将价值与每天的主题相匹配。如有任何帮助,不胜感激。

import numpy as np 
import pandas as pd 
import random
rng = pd.date_range('2015-02-24', periods=50, freq='H')
TOPIC=np.random.choice(5, len(rng), replace=True)
df = pd.DataFrame({ 'Date': rng, 'Val' : np.random.randn(len(rng)),'Topic':TOPIC}) 
columns=df.Topic.unique()
df1=pd.DataFrame(columns=columns)
df1['Date']=df['Date']
df1.set_index('Date',inplace=True)
df1=df1.resample('D').ffill()
df1
df1 = (df.assign().pivot_table(index='Date', columns='Topic',
values='Val'))

输出
Topic                       0         1         2         3         4
Date                                                                 
2015-02-24 00:00:00       NaN       NaN       NaN -1.311060       NaN
2015-02-24 01:00:00  0.194373       NaN       NaN       NaN       NaN
2015-02-24 02:00:00       NaN       NaN  0.182364       NaN       NaN
2015-02-24 03:00:00       NaN       NaN       NaN -1.498907       NaN
2015-02-24 04:00:00  0.220041       NaN       NaN       NaN       NaN
2015-02-24 05:00:00       NaN -0.183823       NaN       NaN       NaN
2015-02-24 06:00:00       NaN       NaN       NaN       NaN  0.662866
2015-02-24 07:00:00       NaN  0.846723       NaN       NaN       NaN
2015-02-24 08:00:00       NaN       NaN       NaN -1.238696       NaN
2015-02-24 09:00:00       NaN       NaN       NaN -2.520253       NaN
2015-02-24 10:00:00       NaN       NaN       NaN       NaN  1.056829
2015-02-24 11:00:00       NaN       NaN       NaN -0.749357       NaN
2015-02-24 12:00:00       NaN  0.038661       NaN       NaN       NaN
2015-02-24 13:00:00       NaN  0.304193       NaN       NaN       NaN
2015-02-24 14:00:00       NaN       NaN       NaN -1.217962       NaN
2015-02-24 15:00:00       NaN  2.073715       NaN       NaN       NaN
2015-02-24 16:00:00       NaN       NaN       NaN -0.320530       NaN
2015-02-24 17:00:00 -1.309147       NaN       NaN       NaN       NaN
2015-02-24 18:00:00       NaN       NaN       NaN       NaN -0.240466
2015-02-24 19:00:00       NaN       NaN       NaN  0.043733       NaN
2015-02-24 20:00:00       NaN       NaN       NaN       NaN  1.395441
2015-02-24 21:00:00       NaN       NaN  0.625773       NaN       NaN
2015-02-24 22:00:00       NaN       NaN       NaN       NaN  0.291916
2015-02-24 23:00:00       NaN       NaN       NaN  0.090431       NaN
2015-02-25 00:00:00       NaN       NaN -0.509572       NaN       NaN
2015-02-25 01:00:00       NaN       NaN -0.309990       NaN       NaN
2015-02-25 02:00:00       NaN       NaN  0.711705       NaN       NaN
2015-02-25 03:00:00       NaN  0.296445       NaN       NaN       NaN
2015-02-25 04:00:00       NaN       NaN       NaN  0.222146       NaN
2015-02-25 05:00:00       NaN       NaN       NaN       NaN  1.030145
2015-02-25 06:00:00  1.064250       NaN       NaN       NaN       NaN
2015-02-25 07:00:00       NaN       NaN  0.023348       NaN       NaN
2015-02-25 08:00:00       NaN       NaN       NaN       NaN -0.576451
2015-02-25 09:00:00       NaN       NaN  1.573513       NaN       NaN
2015-02-25 10:00:00       NaN       NaN  0.960823       NaN       NaN
2015-02-25 11:00:00       NaN       NaN  0.349976       NaN       NaN
2015-02-25 12:00:00       NaN       NaN       NaN -0.885772       NaN
2015-02-25 13:00:00       NaN  1.050893       NaN       NaN       NaN
2015-02-25 14:00:00       NaN       NaN -1.634622       NaN       NaN
2015-02-25 15:00:00       NaN       NaN       NaN       NaN  0.003866
2015-02-25 16:00:00  0.952088       NaN       NaN       NaN       NaN
2015-02-25 17:00:00       NaN       NaN  0.518994       NaN       NaN
2015-02-25 18:00:00 -0.770279       NaN       NaN       NaN       NaN
2015-02-25 19:00:00       NaN       NaN -0.510245       NaN       NaN
2015-02-25 20:00:00 -0.024560       NaN       NaN       NaN       NaN
2015-02-25 21:00:00       NaN       NaN -0.823536       NaN       NaN
2015-02-25 22:00:00       NaN       NaN       NaN       NaN -0.498414
2015-02-25 23:00:00       NaN  0.497084       NaN       NaN       NaN
2015-02-26 00:00:00       NaN  0.799647       NaN       NaN       NaN
2015-02-26 01:00:00       NaN       NaN       NaN -2.291271       NaN

最新更新