2016-06-03 2 views
1

사전 설정된 timeseries 데이터 프레임에서 일련의 값 집합을 바꾸고 싶습니다. 예 : 시리즈 a에서 3 개의 값이 3 개의 시간 소인 값을 대체합니다. 그러나 또는 을 대체합니다 .set_value 명령이 작동하지 않는 것 같습니다.이 경우 타임 스탬프는 이미 인덱싱 된 형식입니다. 타임 스탬프 예 시리즈는 다음과 같습니다 : 파이썬에서열 값 바꾸기 o 팬더 시간 집합

> timestamp  Coloum_1 
> 01/01/2010 00:00 21.17 
> 01/01/2010 00:15 19.67 
> 01/01/2010 00:30 17.95 
a = pd.Series([15.0,16.0,17.0]) 
    df.set_value("index=pd.DatetimeIndex(start='2010/01/1 00::00', periods=3, freq='900 sec')", 'Column_1', 'a') 

좀 새. 모든 지원을 감사하십시오. 감사.

업데이트

출력이 맨 아래와 같을 수 있습니다. 여기 타임 스탬프와 Column1 데이터는 Python이 읽고 해석을 위해 추출하는 별도의 Excel 파일에 있습니다. 타임 스탬프는 이미 색인 된 형식으로되어 있으며 별도의 계열 값으로 바꾸려면 column1 값만 필요합니다. 그러나 일련 값을 타임 스탬프 시퀀스로 대체하는 것으로는 보이지 않습니다.

In [42]: df4 = pd.DataFrame({'Timestamp': ['2010-01-01 00:00:00', '2010-01-01 00:15:00', '2010-01-01 00:30:00'], 'Column_1':[21.17, 19.17, 17.95]}) 
df4 = df4.set_index('Timestamp') 
df4.head() 

Out[42]: 
Timestamp   Column_1 
2010-01-01 00:00:00 21.17 
2010-01-01 00:15:00 19.17 
2010-01-01 00:30:00 17.95 

In [43]:a = pd.Series([50.0,60.0,70.0])   
df4.replace("'2010-01-01 00:00:00', periods=3, freq='15 min'", 'Column_1',a.all) 
df4.head() 

a = pd.Series([50.0,60.0,70.0]) 
df4.replace("'2010-01-01 00:00:00', periods=3, freq='15 min'", 'Column_1',a.all) 
df4.head() 

Out[43]: 
Timestamp   Column_1 
2010-01-01 00:00:00 21.17 
2010-01-01 00:15:00 19.17 
2010-01-01 00:30:00 17.95 

그러나 하나의 타임 스탬프 만 사용하면 해당 값이 대체됩니다.

In [50]: 

df4.set_value('2010-01-01 00:00:00', 'Column_1', 50); 
df4.head() 


Out[50]: 
Timestamp   Column_1 
2010-01-01 00:00:00 50.00 
2010-01-01 00:15:00 19.17 
2010-01-01 00:30:00 17.95 
+0

안녕 멀린, 감사합니다. 별도의 섹션을 추가하여 문제를 설명하고 더 자세히 출력하십시오. 이걸 좀 봐주시겠습니까? – saltymisty73

+0

/@ saltymisty73 당신이 그것을 생각하고있다;) .. 편집을 참조하십시오. 당신은 팬더를 사용하기 위해 팬더 객체를 생성 할 필요가 없습니다. – Merlin

+0

@ 멜린 : 하하 ... 나는 타임 스탬프에 15 분 간격으로 20000 개 이상의 신호를 보낸다. 일부 정의 된 값 일치를 특정 시간 소인으로 대체하고 해당 값을 겹쳐 쓰는 가장 쉬운 방법은 시간 소인과 일치 할 수 있어야한다고 생각합니다. – saltymisty73

답변

0

이 시도 :

a = pd.Series([15.0,16.0,17.0]) 
    #0 15.0 
    #1 16.0 
    #2 17.0 
    # dtype: float64 

    a = pd.date_range('1/1/2010', periods=3, freq='900S') 

    #DatetimeIndex(['2010-01-01 00:00:00', '2010-01-01 00:15:00', 
    #    '2010-01-01 00:30:00'], 
    #   dtype='datetime64[ns]', freq='900S') 

print a 

    # DatetimeIndex(['2010-01-01 00:00:00', '2010-01-01 00:15:00', 
    #    '2010-01-01 00:30:00'], 
    #    dtype='datetime64[ns]', freq='900S') 


df = pd.DataFrame(a, columns=['Column1']) 
# or df = pd.DataFrame(pd.date_range('1/1/2010', periods=3, freq='900S'), columns=['Column1']) 
    #    Column1 
    # 0 2010-01-01 00:00:00 
    # 1 2010-01-01 00:15:00 
    # 2 2010-01-01 00:30:00 

s = pd.Series(range(3), name='Column1') 
    #0 0 
    #1 1 
    #2 2 
    #Name: Column1, dtype: int64 

편집 :

df4['Column_1'] = [50.0,60.0,70.0] 
1

가 해결

In [68]: 
df = pd.DataFrame({'Timestamp': ['2010-01-01 00:00:00', '2010-01-01 00:15:00', '2010-01-01 00:30:00', '2010-01-01 00:45:00'], 
        'Column_1':[21.17, 19.17, 17.95, 25.0]}) 
df = df.set_index('Timestamp') 
df.head() 

Out[68]: 
Timestamp   Column_1 
2010-01-01 00:00:00 21.17 
2010-01-01 00:15:00 19.17 
2010-01-01 00:30:00 17.95 
2010-01-01 00:45:00 25.00 
4 rows × 1 columns 
In [69]: 

df.loc ['2010-01-01 00:00:00':'2010-01-01 00:15:00', 'Column_1'] = [50,60] 
df.head() 

Out[69]: 
Timestamp   Column_1 
2010-01-01 00:00:00 50.00 
2010-01-01 00:15:00 60.00 
2010-01-01 00:30:00 17.95 
2010-01-01 00:45:00 25.00