1
我有一個csv文件日期爲列標題和二進制矩陣1,0或np.nan
。熊貓TimeGrouper列
我想取每個索引的均值,按月分組。我遇到了一個問題,因爲我的列不是datetimeindex,我試圖用pd.to_datetime()
轉換爲沒有運氣。
binary.csv:
2016-01-01 00:00:00,2016-01-02 00:00:00,2016-02-01 00:00:00,2016-02-02 00:00:00
1,,0,1
0,1,,1
我的代碼:
import pandas as pd
import numpy as np
df = pd.read_csv('binary.csv')
df.columns = pd.to_datetime(df.columns, format='%Y-%m-%d %H:%M:%S')
df = df.groupby(pd.TimeGrouper(freq='M'), axis=0)
print df
錯誤:
TypeError: axis must be a DatetimeIndex, but got an instance of 'Int64Index'
所需的輸出:
2016-01-01 00:00:00 2016-02-01 00:00:00
0 1.0 0.5
1 0.5 1.0
更新問題:
基於最佳答案:
如果我想每個月一個值,有沒有更有效的方法來做到這一點比這個?
pd.DataFrame(data=df.resample('MS', axis=1).mean().mean()).transpose()
謝謝我困惑的軸標籤! 'freq ='MS''與'freq ='M''有什麼區別?我無法在文檔中找到它?你的第二種方法似乎將日期轉換爲索引值(將兩行平均到一起,它是否也需要'groupby'? – user2242044
'MS'用於本月初(請參閱http://stackoverflow.com/a/17001474/ 2285236)。我做到了,所以它匹配你的輸出,用M代碼給2016-01-31和2016-02-29。你能用'pd .__ version__'來檢查你的熊貓版嗎?這個顯示問題看起來像一個bug。 – ayhan
感謝您的澄清!我使用的是版本0.17.0。您的第一種方法確實解決了我的問題,但我對第二種方法感到好奇,爲什麼它對我來說很不同 – user2242044