嗨,我有一個包含 2 列的資料框,其中一列名為 NP_x,具有值 NaN 和“X”,另一列是 Amount_x,具有 int 值。我試圖做的是我想將金額乘以 (-1) 其中 NP_x ='X'
例如我有
NP_x Amount_x
X 2
5
X 4
X 3
我想獲得
NP_x Amount_x
X -2
5
X -4
X -3
我試圖這樣做:
df.loc[df_query5['NP_x'] == 'X', 'Amount_x'] = df['Amount_x'].multiply(-1)
我該如何解決這個問題?
uj5u.com熱心網友回復:
請試試這個:
import numpy as np
df['Amount_x'] = np.where(df['NP_x']=='X',df['Amount_x']*-1,df['Amount_x'])
uj5u.com熱心網友回復:
您可以使用 mul (多重)運算子:
df.loc[df['NP_x'] == 'X', 'Amount_x'] = df['Amount_x'].mul(-1)
uj5u.com熱心網友回復:
請參閱:https ://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html
>>> df.loc[df['shield'] > 6, ['max_speed']]
max_speed
sidewinder 7
因此,您可以使用以下代碼:
df.loc[df['NP_x'] == 'X', ['Amount_x']] = - df.loc[df['NP_x'] == 'X', ['Amount_x']]
uj5u.com熱心網友回復:
看我的例子
import pandas as pd
df = pd.DataFrame([["X", 2], ["Y", 3], ["X", 5]], columns=list("AB"))
東風:
A B 0 X 2 1 Y 3 2 X 5
df["B"] = df["B"].mask(df["A"]=="X", -df["B"])
東風:
A B 0 X -2 1 Y 3 2 X -5
uj5u.com熱心網友回復:
使用DataFrame.loc:
df.loc[df['NP_x']=='X', 'Amount_x'] *= -1
作業方式相同:
df.loc[df['NP_x']=='X', 'Amount_x'] = df.loc[df['NP_x']=='X', 'Amount_x'] * -1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444015.html
上一篇:在pandas中將模型預測添加為列,但如果行中存在空值,則保留NaN作為預測
下一篇:將列值與行值匹配并寫入新列
