簡體   English   中英

多行計算

[英]Multi-Row Calculation

假設我有以下 dataframe:

df1 = {'Column_1':  ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
        'x': ['0', '1', '2', '3', '0', '1', '2', '3']}

df1 = pd.DataFrame (df1, columns = ['Column_1','x'])

df1

我想創建一個名為“x.”的新列。 這是通過將“x”行中的值乘以“x.”的第 1 行來計算的。 'x:' 的第一行的值為 1。當 'Column_1' 中的值發生變化時,我需要計算以重置。 所需的 output 將如下所示:

df2 = {'Column_1':  ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
        'x': ['0', '1', '2', '3', '0', '1', '2', '3'],
        'x!': ['1', '1', '2', '6', '1', '1', '2', '6']}

df2 = pd.DataFrame (df2, columns = ['Column_1','x', 'x!'])

df2

其中“x”是 3,“x”。 是 6,因為 3 x 2 (x! row-1 = 2) 等於 6。

我該怎么做?

謝謝

試試這個簡單明了的方法:

let df1 = {'Column_1':  ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],'x': ['0', '1', '2', '3', '0', '1', '2', '3']}
let newX = ['1'];
    
    for(i=1; i<df1['x'].length; i++){
        let check = parseInt(df1.x[i],10)*parseInt(df1.x[i-1],10)
        if(check ===0){
            newX.push('1')
        }else{
            newX.push(check.toString())
        }
    }
    
    console.log(df1.x) //INITIAL ['0', '1', '2', '3', '0', '1', '2', '3']
    console.log(newX)  //RESULT  ['1', '1', '2', '6', '1', '1', '2', '6']

之后,您可以分配新的 x: 數組:

df1['x!'] = newX

並適用於DataFrame

df2 = pd.DataFrame (df2, columns = Object.keys(df1))

我希望這能解決你的問題。 :)

暫無
暫無

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

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