首页 > 解决方案 > 根据特定列的总和创建新列

问题描述

我对 Python 非常陌生,并试图创建一个列来指示几列的总和是否大于 0。

例如,我有一个类似于下面的 df:

ID 数量 花费 频率 日期
a1 0 0 0 10/02
a2 0 10 0 05/12
a2 0 0 0 03/12

如果 'quantity'、'spent' 和 'freq' 的行全部为 0,我想创建一个新列以指示该行的值全部为 0,如下表所示:

ID 数量 花费 频率 日期 not_zero
a1 0 0 0 10/02 0
a2 0 10 0 05/12 1
a2 0 0 0 03/12 0

标签: pythonpandasdataframerowscalculated-columns

解决方案


然后尝试anyaxis = 1 astype

df['not_zero'] = df[['quantity', 'spent', 'freq']].any(axis=1).astype(int)

或与np.where

df['not_zero'] = np.where(df[['quantity', 'spent', 'freq']].any(axis=1), 1, 0)

df

   id  quantity  spent  freq   date  not_zero
0  a1         0      0     0  10/02         0
1  a2         0     10     0  05/12         1
2  a2         0      0     0  03/12         0

推荐阅读