熊猫:日期时间索引系列到时间索引日期列的数据框

时间:2018-10-25 05:50:40

标签: python pandas

我有一个像这样的日期时间索引系列:

2018-08-27 17:45:01  1
2018-08-27 16:01:12  1
2018-08-27 13:48:47  1
2018-08-26 22:26:40  2
2018-08-26 20:10:42  1
2018-08-26 18:20:32  1
2018-08-25 23:07:51  1
2018-08-25 01:46:08  1
2018-09-18 14:08:23  1
2018-09-17 19:38:38  1
2018-09-15 22:40:45  1

将其重新格式化为以日期为列的时间索引数据框的一种优雅方法是什么?例如:

          2018-10-24  2018-06-28  2018-10-23
15:16:41         1.0         NaN         NaN
15:18:16         1.0         NaN         NaN
15:21:42         1.0         NaN         NaN
23:35:00         NaN         NaN         1.0
23:53:13         NaN         1.0         NaN

当前方法:

time_date_dict = defaultdict(partial(defaultdict, int))
for i in series.iteritems():
  datetime = i[0]
  value = i[1]
  time_date_dict[datetime.time()][datetime.date()] = value
time_date_df = pd.DataFrame.from_dict(time_date_dict, orient='index')

1 个答案:

答案 0 :(得分:3)

使用pivot

df1 = pd.pivot(s.index.time, s.index.date, s)
#if want strings index and columns names
#df1 = pd.pivot(s.index.strftime('%H:%M:%S'), s.index.strftime('%Y-%m-%d'), s)
print (df1)
date      2018-08-25  2018-08-26  2018-08-27  2018-09-15  2018-09-17  \
date                                                                   
01:46:08         1.0         NaN         NaN         NaN         NaN   
13:48:47         NaN         NaN         1.0         NaN         NaN   
14:08:23         NaN         NaN         NaN         NaN         NaN   
16:01:12         NaN         NaN         1.0         NaN         NaN   
17:45:01         NaN         NaN         1.0         NaN         NaN   
18:20:32         NaN         1.0         NaN         NaN         NaN   
19:38:38         NaN         NaN         NaN         NaN         1.0   
20:10:42         NaN         1.0         NaN         NaN         NaN   
22:26:40         NaN         2.0         NaN         NaN         NaN   
22:40:45         NaN         NaN         NaN         1.0         NaN   
23:07:51         1.0         NaN         NaN         NaN         NaN   

date      2018-09-18  
date                  
01:46:08         NaN  
13:48:47         NaN  
14:08:23         1.0  
16:01:12         NaN  
17:45:01         NaN  
18:20:32         NaN  
19:38:38         NaN  
20:10:42         NaN  
22:26:40         NaN  
22:40:45         NaN  
23:07:51         NaN