Pandas数据框架时间序列



我想用日期时间戳(最多分钟)作为索引构建一个数据框架,并在为每个新列获取数据时不断添加列。例如,对于cola,我按天、小时和分钟从另一个数据集聚合到一个值"k"。我想将这个值"k"插入到数据框的"右"行索引处。我面临的问题是当前的行标识符来自日期,小时,分钟分组对象。不知道如何将这3"连接"成一个漂亮的时间序列类型。

这是我目前拥有的(我的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并填充到我的数据框中。我该怎么做呢?我必须以某种方式转换"日期,小时,分钟"形式groupby对象到时间序列对象…??

同样,我将为当天的许多分钟设置一系列cola值。我想一次性用这些值填充整个列,并用'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)

任何想法吗?

你几乎在你的代码中弄清楚了。做一些改动就可以完成这个任务。

  1. 初始化没有数据的数据帧,并使用timeindex。(你可以在以后添加更多行)
  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]

最新更新