2016-11-28 179 views
1

我使用DATE_TIME應用了大熊貓據幀與基於日期範圍的時間序列指標,如下:的Python /大熊貓條件語句值

     Column A 
2016-11-24 00:00:00 4.0 
2016-11-24 01:00:00 7.8 
2016-11-24 02:00:00 95.1 
2016-11-24 03:00:00 78.4 
etc 

我希望做的是根據索引中的月份創建一個將列表應用於列A的新列。

的校正因子:九月= 1,十月= 2,十一月= 3,臘= 4等

因此,在上述情況下的例子中,因爲是月月,其結果將是:

     Column A Column B 
2016-11-24 00:00:00 4.0  12 
2016-11-24 01:00:00 7.8  23.4 
2016-11-24 02:00:00 95.1  285.3 
2016-11-24 03:00:00 78.4  235.2 
etc 

我已經嘗試了一些解決方案,這一些麻煩。有沒有人有任何提示?

回答

2

我想你可以從。減去month8然後multiple,但在幾個月前September獲得數少爲1

print (df.index.month - 8) 
[3 3 3 3] 

df['Column B'] = df['Column A'] * (df.index.month - 8) 
print (df) 
        Column A Column B 
2016-11-24 00:00:00  4.0  12.0 
2016-11-24 01:00:00  7.8  23.4 
2016-11-24 02:00:00  95.1  285.3 
2016-11-24 03:00:00  78.4  235.2 

您還可以通過mul使用map通過dict然後多。在此解決方案中,必須從​​創建Series,其返回numpy array索引爲df(如果不是index,則獲取所有值NaN,因爲索引不匹配)。

d = {9:1,10:2,11:3,12:4} 

df['Column B'] = pd.Series(df.index.month, index=df.index).map(d).mul(df['Column A']) 
print (df) 
        Column A Column B 
2016-11-24 00:00:00  4.0  12.0 
2016-11-24 01:00:00  7.8  23.4 
2016-11-24 02:00:00  95.1  285.3 
2016-11-24 03:00:00  78.4  235.2 
+0

謝謝。我用你的第二種方法去了。完美工作! – pottolom

+0

超級,我很高興能幫助你! – jezrael