Pandas Dataframe时间序列

时间:2015-09-08 19:05:22

标签: pandas time-series

我想用datetimestamp(最多几分钟)构建一个数据框作为索引,并在我获取每个新列的数据时不断添加列。例如,对于Col-A,我按天,小时和分钟从另一个数据集聚合到值' k'。我想插入这个值' k'进入右边的数据框'行索引。我面临的问题是当前行标识符来自日期,小时,分钟的groupby对象。不确定如何连接'这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对象形成一个timeseries obj ... ???

此外,我将在当天的许多分钟内获得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)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你几乎在你的代码中弄明白了。 一些变化可以完成这个诀窍。

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

    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]