2015-09-08 167 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]