2016-11-28 10 views
1

나는 다음과 같이 날짜 범위에 따라 시계열 지수와 팬더의 dataframe는 DATE_TIME을 사용하여 적용이 : 내가하고 싶은 무엇파이썬/팬더 조건문 값

     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에 인수를 적용하는 새 열을 작성하십시오.

교정 요인 9 월 = 1 년 10 월 = 2 11 월 = 3 년 12 월 = 4 월 11 월을하기 때문에 등

그래서, 경우 위의 예에서, 결과는 다음과 같습니다

     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

나는 September1으로 숫자를 얻기 전에 month에서 8 다음 multiple을 빼지 만, 개월 수 있다고 생각 :

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으로 다음을 사용할 수 있습니다. 이 솔루션에서는 Seriesdf.index.month에서 생성하고 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