2017-11-02 1 views
1

기존의 조건문을 기반으로 팬더 dataframe에 새 열을 추가는 다음과 같습니다하는 DataFrame 되 잖아 열

Date   Price 
0 Jan 04, 1999 1.1827 
1 Jan 05, 1999 1.1764 
2 Jan 06, 1999 1.1618 
3 Jan 07, 1999 1.1709 
4 Jan 08, 1999 1.1575 
5 Jan 11, 1999 1.1502 
6 Jan 12, 1999 1.1572 
7 Jan 13, 1999 1.1673 
8 Jan 14, 1999 1.1698 
9 Jan 15, 1999 1.1557 

이 같은 Excel에서 계산 새 열을 추가하고 싶습니다 : = IF ((B2-B1)> 0; B2-B1 0), 그래서 다음과 같이한다 : 사실

Date   Price up 
0 Jan 04, 1999 1.1827 0.0000 
1 Jan 05, 1999 1.1764 0.0000 
2 Jan 06, 1999 1.1618 0.0000 
3 Jan 07, 1999 1.1709 0.0091 
4 Jan 08, 1999 1.1575 0.0000 
5 Jan 11, 1999 1.1502 0.0000 
6 Jan 12, 1999 1.1572 0.0070 
7 Jan 13, 1999 1.1673 0.0101 
8 Jan 14, 1999 1.1698 0.0025 
9 Jan 15, 1999 1.1557 0.0000 

, 나는 해결책을 가지고,하지만 난 그것으로 만족하지 오전 :

ser=[] 
i = 0 
while i < len(df["Price"]): 
    if i==0: 
     ser.append(0) 
    elif df["Price"][i]-df["Price"][i-1]>0: 
     ser.append((df["Price"][i]-df["Price"][i-1])) 
    else: 
     ser.append(0) 
    i = i+1 
df["up"]=ser 

더 좋은 해결책이 있습니까? 감사!

+0

, 잊지 마세요 (http://meta.stackexchange.com/a/5235/295067)를 [동의]를 대답 옆의 체크 표시 ('✓')를 눌러서 회색으로 바꿔서 채 웁니다. 고마워요. – jezrael

답변

2

사용 diffwhere으로 : - 온 클릭 내 대답이 도움이되었다 경우

dif = df['Price'].diff() 
df['up'] = dif.where(dif > 0, 0) 
#alternative 
#df['up'] = np.where(dif > 0, dif, 0) 
print (df) 
      Date Price  up 
0 Jan 04, 1999 1.1827 0.0000 
1 Jan 05, 1999 1.1764 0.0000 
2 Jan 06, 1999 1.1618 0.0000 
3 Jan 07, 1999 1.1709 0.0091 
4 Jan 08, 1999 1.1575 0.0000 
5 Jan 11, 1999 1.1502 0.0000 
6 Jan 12, 1999 1.1572 0.0070 
7 Jan 13, 1999 1.1673 0.0101 
8 Jan 14, 1999 1.1698 0.0025 
9 Jan 15, 1999 1.1557 0.0000