2017-08-24 4 views
0

Ich schreibe den folgenden Code, und ich möchte nur die ersten 3 Minuten der Werte mit pd.where Methode, aber ich bekomme den folgenden Fehler: ValueError: Array bedingt muss sein gleiche Form wie selbstValueError bei der Verwendung der DataFrame.Where Methode in Pandas

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) 

Es ist eine another question mit diesem Fehler, aber die Kontexte sind unterschiedlich.

Der Code für Integer-Index scheint gut zu funktionieren, aber für Zeitreihen habe ich ein Problem.

Antwort

1

Sie können df.where verwenden, nachdem df.index zu series

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] 
Umwandlung
Verwandte Themen