2017-08-24 108 views
0

我正在編寫下面的代碼,並且我只想用pd.where方法獲取值的前3分鐘,但出現以下錯誤: ValueError:數組條件必須是相同的形狀,自當在熊貓中使用DataFrame.where方法時出現ValueError

import pandas as pd 
import numpy as np 

index = pd.date_range(start = '2017-06-01 00:00', end='2017-06-01 01:00', freq='1min') 
values = np.arange(0, len(index)) 
df = pd.DataFrame(values, index = index) 

df.where(df.index <= df.index[0] + pd.DateOffset(minutes=3), np.nan) 

沒有與此誤差的another question但是上下文是不同的。

整數索引的代碼似乎運作良好,但對於時間序列我有問題。

回答

1

可以轉換df.indexseries

In [557]: df.where(df.index.to_series() <= df.index[0] + pd.DateOffset(minutes=3)) 
Out[557]: 
         0 
2017-06-01 00:00:00 0.0 
2017-06-01 00:01:00 1.0 
2017-06-01 00:02:00 2.0 
2017-06-01 00:03:00 3.0 
2017-06-01 00:04:00 NaN 
2017-06-01 00:05:00 NaN 
2017-06-01 00:06:00 NaN 
...     ... 
2017-06-01 00:57:00 NaN 
2017-06-01 00:58:00 NaN 
2017-06-01 00:59:00 NaN 
2017-06-01 01:00:00 NaN 

[61 rows x 1 columns] 
後使用 df.where