簡體   English   中英

根據現有列的條件語句向熊貓數據框添加新列

[英]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

還有更優雅的解決方案嗎? 謝謝!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM