2017-02-27 160 views
0

大家好我有一個cvs文件,其中包含每小時一次的數據數據。我需要在整個月的12:00 am-3:00am的時間間隔內獲得其中一列的平均值。我正在使用pandas.DataFrame來嘗試執行此操作。Python代碼在特定時間段內在月度數據中的平均值

數據的樣品我使用

DateTime current  voltage 
11/1/2014 12:00 1.122061402 4.058617834 
11/1/2014 1:00 1.120534925 4.060912132 
11/1/2014 2:00 1.119349897 4.058656072 
11/1/2014 3:00 1.118277733 4.060912132 
11/1/2014 4:00 1.120365636 4.060912132 
11/1/2014 5:00 1.120365636 4.060912132 

我想從12 am-3am平均每天2列整月。我想在時間上使用條件語句是一個很好的選擇,但是我不確定如何在日期/時間數據上實現條件語句。

+1

'df ['DateTime']。resample('3H')。mean()'? –

+0

如果我實現了3H意味着每3小時的數據就會給我意味着什麼。我想在整個月的上午12點到上午3點的時間段內獲得這個意思。 – acb

+1

假設'DateTime'是索引會工作嗎? 'df.between_time('12:00','3:00')。resample('3H')。mean()' –

回答

1

我將假定您已經將該文件導入名爲df的Pandas數據框。你的「日期時間」字段被大熊貓通過檢查df.dtypes值確認爲一個DateTime

  1. 確認。如果不是,重鑄例如搭配:

    df['DateTime'] = pd.to_datetime(df['DateTime'])

  2. 仔細檢查,像上午12點,下午1點,等次被妥善處理。 (你沒有在你的數據集中指出任何東西來區分上午12點和下午12點等)。如果沒有,你將需要設計一個合適的方法來糾正它們或者從原始源重新導出它們。

  3. 從DateTime字段創建DatetimeIndex:

    df = df.set_index(pd.DatetimeIndex(df['DateTime']))

  4. 現在採取梅德的建議(少許修改):

    >>> df.between_time('0:00', '3:00').resample('1D').mean()

結果的指數將顯示時間間隔的開始被平均。

編輯時考慮了評論中的新信息。

+0

謝謝你這個作品。無論如何只能在數據中的某些列上執行df.between_time?我也可以將這些值保存到列表中嗎? – acb

+0

確定的事情:嘗試'list(df ['current']。between_time('0:00','3:00')。resample('1D')。mean())'只獲取平均當前值例如,該時間框架。 – mewahl

相關問題