2015-09-08 119 views
0

我想用datetimestamp(upto分钟)作为索引建立一个数据帧,并在我为每个新列获取数据时不断添加列。例如,对于Col-A,我按天,小时和分钟从另一个数据集聚合到值'k'。我想在'右'行索引处将这个值'k'插入到一个数据框中。我面临的问题是当前行标识符来自日期,小时,分钟的groupby对象。不知道如何将这3个“连接”成一个很好的时间序列类型。Pandas Dataframe时间序列

这是我目前有(我GROUPBY对象的输出):

currGroupedData = cData.groupby(['DATE', 'HOUR', 'MINUTE']) 
numUniqValuesPerDayHrMin = currGroupedData['UID'].nunique() 
print numUniqValuesPerDayHrMin 

Computing Values for A: 
DATE  HOUR MINUTE 
2015-08-15 6  38  65 
Name: UID, dtype: int64 

形成一个新的数据帧,以容纳许多列(A,B,...,Z),我这样做:

index = pd.date_range('2015-10-05 10:00:00', '2015-11-10 10:00:00', freq='1min') 
df = pd.DataFrame(index=index) 

现在,我想'不知何故'取值65并填充到我的数据框中。我该怎么做呢?我必须以某种方式将“对象的日期,时间,分钟”形式转换为时间序列对象...?

此外,我将为当天的许多分钟设置Col-A的一系列值。我想一次性填充整个列中的值,并用“0”填充剩下的值。然后,继续处理/填充下一列。

我可以这样做:

str = '2015-10-10 06:10:00' 

str 
Out[362]: '2015-10-10 06:10:00' 

pd.to_datetime(str, format='%Y-%m-%d %H:%M:%S', coerce=True) 
Out[363]: Timestamp('2015-10-10 06:10:00') 

row_idx = pd.to_datetime(str, format='%Y-%m-%d %H:%M:%S', coerce=True) 

type(row_idx) 
Out[365]: pandas.tslib.Timestamp 

data = pd.DataFrame({'Col-A': 65}, index = pd.Series(row_idx)) 
df.add(data) 

有什么想法?

回答

0

你几乎已经知道你的代码了。 一些变化可以完成。

  1. 初始化没有数据和时间索引的数据帧。 ( 可以随后添加更多行)
  2. 初始化新列,值设置为0.
  3. 设置列在目标时间的值。

|

import pandas as pd 


index = pd.date_range('2015-10-05 10:00:00', '2015-11-10 10:00:00', freq='1min') 
df = pd.DataFrame(index=index) 

# initialize the column with all values set to 0. 
df['first_column'] = 0 
# format the target time into a timestamp 
target_time = pd.to_datetime('2015-10-15 6:38') 
# set the value for the target time to 65 
df['first_column'][ target_time]=65 
# output the value at the target time. 
df['first_column'][ target_time]