使用Pandas将两个数字列相乘

2024-10-02 02:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有pd dataframe(data),有三列,X,Y和Z

我需要运行以下命令:

X*Y其中Z='值'

我的工作思路是:

data[data['Z'] == 'value',[data['X']*data['Y']]]

现在我知道这是不对的,但我能闻到正确答案。有人能给我指出正确的方向吗?在


Tags: 答案命令dataframedatavalue方向pd工作思路
3条回答
data.loc[data['Z'] == 'value', 'Z'] = data.loc[data['Z'] == 'value', 'X'] * data.loc[data['Z'] == 'value', 'Y']

下面是一个有效的例子:

^{pr2}$

IIUC:

(df.X * df.Y).where(df.Z == 'Value')

或者

^{pr2}$

示例:

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}$

相关问题 更多 >

    热门问题