![](/img/trans.png)
[英]Assign (add) a new column to a dask dataframe based on values of 2 existing columns - involves a conditional statement
[英]Add new column to a pandas dataframe based on conditional statement of existing column
我有一個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
還有更優雅的解決方案嗎? 謝謝!
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.