2014-10-29 34 views
0

好吧,我有一個熊貓的日期框架,如下圖所示。如何用正值而不是負值創建新列

Date  Time   Value/MWh 
01.08.2009 00:00 - 01:00 0 
01.08.2009 01:00 - 02:00 -100 
01.08.2009 02:00 - 03:00 80 
01.08.2009 03:00 - 04:00 50 

如果有一個值< 0,我想有這個值作爲新列的正值。 如果上課的情況下,在左側列shoult是0

它必須看起來像這樣:

Date  Time   Value/MWh 
01.08.2009 00:00 - 01:00 0 0 
01.08.2009 01:00 - 02:00 0 100 
01.08.2009 02:00 - 03:00 80 0 
01.08.2009 03:00 - 04:00 50 0 

如何我能得到這個?

+0

你嘗試了什麼? – joris 2014-10-29 15:20:10

+0

我對循環有一些想法(例如用Numpy),但是對熊貓都沒有。 – EP1986 2014-10-29 15:23:11

+0

看看['np.where'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html)這是一件小事,試試看當你卡住時回來 – EdChum 2014-10-29 15:26:30

回答

0

這個工作對我來說:

df['new'] = 0 
df.new.loc[df['Value/MWh']<0] = df['Value/MWh'].abs() 
df['Value/MWh'].loc[df['Value/MWh']<0] = 0 

你應該避免使用陌生的列名,就可以產生錯誤。

+0

謝謝。但是我得到以下錯誤:TypeError:abs()的錯誤操作數類型:'str' – EP1986 2014-10-30 06:06:41

+0

@ EP1986這意味着您的列的dtype是字符串而不是ints/float。你需要將任何列字符串轉換爲整數'df ['Value/MWh'] = df ['Value/MWh']。astype(int)' – EdChum 2014-10-30 11:00:32

+0

謝謝!!!!! – EP1986 2014-10-30 17:51:15

相關問題