2024-10-02 02:33:42 发布
网友
我有pd dataframe(data),有三列,X,Y和Z
我需要运行以下命令:
X*Y其中Z='值'
我的工作思路是:
data[data['Z'] == 'value',[data['X']*data['Y']]]
现在我知道这是不对的,但我能闻到正确答案。有人能给我指出正确的方向吗?在
data.loc[data['Z'] == 'value', 'Z'] = data.loc[data['Z'] == 'value', 'X'] * data.loc[data['Z'] == 'value', 'Y']
下面是一个有效的例子:
IIUC:
(df.X * df.Y).where(df.Z == 'Value')
或者
示例:
np.random.seed(123) df = pd.DataFrame({'X':np.arange(10),'Y':np.arange(10),'Z':np.random.choice(['Value',np.nan],10)}) (df.X * df.Y).where(df.Z == 'Value') 0 0.0 1 NaN 2 4.0 3 9.0 4 16.0 5 25.0 6 36.0 7 NaN 8 NaN 9 81.0 dtype: float64
df[df.Z == 'Value'].eval('X * Y') 0 0 2 4 3 9 4 16 5 25 6 36 9 81 dtype: int32
设置借用自@ScottBoston
np.random.seed(123) df = pd.DataFrame({ 'X':np.arange(10), 'Y':np.arange(10), 'Z':np.random.choice(['Value',np.nan],10) })
解决方案
下面是一个有效的例子:
^{pr2}$IIUC:
或者
^{pr2}$示例:
或者
设置
借用自@ScottBoston
解决方案
^{pr2}$相关问题 更多 >
编程相关推荐